일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- #알고리즘 #백준 #3190 #백준3190 #algorithm #baekjoon #baekjoon3190 #C++
- #알고리즘 #algorithm #프로그래머스 #2020카카오공채 #문자열압축 #programmers #C++
- #알고리즘 #백준 #14888 #백준14888 #algorithm #baekjoon #baekjoon14888 #C++
- #알고리즘 #백준 #1987 #백준1987 #algorithm #baekjoon #baekjoon1987 #Java
- #알고리즘 #백준 #2352 #백준2352 #algorithm #baekjoon #baekjoon2352 #C++
- #알고리즘 #백준 #2616 #백준2616 #algorithm #baekjoon #baekjoon2616 #Java
- #알고리즘 #백준 #15684 #백준15684 #algorithm #baekjoon #baekjoon15684 #C++
- #알고리즘 #백준 #2580 #백준2580 #algorithm #baekjoon #baekjoon2580 #Java
- 클린코드
- #알고리즘 #백준 #5214 #백준5214 #algorithm #baekjoon #baekjoon5214 #C++
- CleanCode
- #알고리즘 #algorithm #프로그래머스 #2020카카오공채 #블록이동하기 #programmers #C++
- #알고리즘 #백준 #17472 #백준17472 #algorithm #baekjoon #baekjoon17472 #C++
- #알고리즘 #백준 #17136 #백준17136 #algorithm #baekjoon #baekjoon17136 #C++
- #알고리즘 #백준 #17406 #백준17406 #algorithm #baekjoon #baekjoon17406 #C++
- 개발자취미
- 책리뷰
- #알고리즘 #algorithm #프로그래머스 #2020카카오공채 #외벽점검 #programmers #C++
- #알고리즘 #백준 #1260 #백준1260 #algorithm #baekjoon #baekjoon1260 #Java
- #알고리즘 #algorithm #프로그래머스 #2020카카오공채 #괄호변환 #programmers #C++
- #알고리즘 #백준 #4386 #백준4386 #algorithm #baekjoon #baekjoon4386 #C++
- #알고리즘 #백준 #15683 #백준15683 #algorithm #baekjoon #baekjoon15683 #C++
- 개발서
- #알고리즘 #백준 #1525 #백준1525 #algorithm #baekjoon #baekjoon1525 #C++
- #알고리즘 #백준 #2573 #백준2573 #algorithm #baekjoon #baekjoon2573 #C++
- 스레드 #동시성 #thread #process #
- #알고리즘 #백준 #17837 #백준17837 #algorithm #baekjoon #baekjoon17837 #C++
- #알고리즘 #백준 #17140 #백준17140 #algorithm #baekjoon #baekjoon17140 #C++
- #알고리즘 #백준 #1793 #백준1793 #algorithm #baekjoon #baekjoon1793 #C++
- #알고리즘 #백준 #12094 #백준12094 #algorithm #baekjoon #baekjoon12094 #C++
Archives
- Today
- Total
개발자 일기장.
[2020 KAKAO BLIND RECRUITMENT] 외벽 점검 본문
[2020 KAKAO BLIND RECRUITMENT] 외벽 점검
문제 알고리즘
- 순열
풀이방법
- 취약지점은 원형의 형태를 지니고 있고, 하나의 취약지점에서 시작하는 것이 많은 취약지점을 방문할 수 있는 시작점이다. 그러므로 취약지점을 deque형태로 만들어서, 갈 수 있는 경우를 모두 구한다.
- 사람 수를 점차 올리면서 그 사람의 수로 취약지점을 전부 방문 가능한지 확인한다.
- 그 사람이 최대 갈수있는 취약지점을 체크하고 못 갔던 부분은 그 다음사람에게 넘긴다.
- 핵심 코드
#include <iostream>
#include <string>
#include <vector>
#include <deque>
#include <algorithm>
using namespace std;
bool isFinished(vector<int> dist, deque<int> weakList, int cnt) {
sort(dist.begin(), dist.end());
do {
int start = 0;
for (int i = 0, j=start; i < cnt; i++) {
// i는 사람 번호, j는 그 사람이 갈 수 있는 취약지점 위치
int possibleDist = weakList[start] + dist[i];
while (j < weakList.size()) {
if (weakList[j] <= possibleDist)
j++; // 더 갈수있으면 더 간다
else {
start = j; // 다음 사람에게 맡김
break;
}
}
// 취약지점을 다 돈 경우
if (j == weakList.size()) {
return true;
}
}
} while (next_permutation(dist.begin(), dist.end()));
return false;
}
int solution(int n, vector<int> weak, vector<int> dist) {
int answer = 0;
deque<int> weakList;
// 취약지점 없으면 0
if (weak.size() == 0)
return 0;
// 사람 수를 올리면서 확인
for (int i = 1; i <= dist.size(); i++) { // 사람 수
// weak list 생성
for (int j = 0; j < weak.size(); j++)
weakList.push_back(weak[j]);
for (int j = 0; j < weak.size(); j++) {
// 해당 사람수로 해결되면 종료
if (isFinished(dist, weakList, i))
return i;
int key = weakList.front();
weakList.pop_front();
weakList.push_back(key + n);
}
weakList.clear();
}
return -1;
}
int main() {
cout << solution(12, { 1, 5, 6, 10 }, { 1, 2, 3, 4 }) << "\n";
cout << solution(12, { 1, 3, 4, 9, 10 }, { 3, 5, 7 }) << "\n";
}
문제 후 느낀점
- 다른 아이디어를 참고했다.
'취업 > Algorithm.' 카테고리의 다른 글
백준 1793. 타일링 (0) | 2020.05.30 |
---|---|
백준 1260. DFS, BFS (0) | 2020.05.30 |
백준 14888. 연산자 끼워넣기 (0) | 2020.05.02 |
백준 2573. 빙산 (0) | 2020.05.01 |
[2020카카오공채] 괄호 변환 (0) | 2020.04.11 |