-
[Algorithm] 프로그래머스 야간 전술보행 - C++쾌락없는 책임 (공부)/알고리즘 문제풀이 2022. 11. 18. 18:35반응형
#include <string> #include <vector> #include <algorithm> using namespace std; int solution(int distance, vector<vector<int>> scope, vector<vector<int>> times) { int answer = distance; for(int i = 0; i < scope.size(); i++){ int fromDist = min(scope[i][0], scope[i][1]); int toDist = max(scope[i][0], scope[i][1]); int workTime = times[i][0]; int restTime = times[i][1]; for(int pos = fromDist; pos <= toDist; pos++){ if(pos % (workTime + restTime) == 0){ continue; } if(pos % (workTime + restTime) <= workTime){ answer = min(answer, pos); } } } return answer; }
일단 전체 길이가 천만까지 가는 문제라 '감시자들'의 경우의 수만 생각을 해봐야 합니다.
감시자들의 근무시간에 해당 위치를 지나가면 걸리는 문제인데 감시자들의 근무 위치를 통해서 볼 수 있습니다. 현재 위치가 곧 시간이니 pos로 보면 pos % (workdTime + restTime) == 0이 되면 아직 근무자들이 쉬는 시간이라 통과가 가능하고 그 외의 경우 남은 나머지가 workTime 보다 커야지 휴식 시간인 것입니다.
이를 통해서 for문 돌려주면 큰 문제 없이 문제를 풀 수 있을 것 같습니다.
반응형'쾌락없는 책임 (공부) > 알고리즘 문제풀이' 카테고리의 다른 글
[Algorithm] 백준 5582 공통 부분 문자열 - C++, LCS, DP (1) 2023.06.11 [Algorithm] 프로그래머스 미로 탈출 - C++, BFS (0) 2023.02.20 [Algorithm] 프로그래머스 호텔 방 배정 - C++, unordered_map (1) 2022.11.12 [Algorithm] 프로그래머스 부대복귀 - C++, BFS (0) 2022.11.11 [Algorithm] 백준 14500 테트로미노 - C++, DFS (0) 2022.10.21