2021. 8. 16. 02:31, 알고리즘/Programmers
문제 링크
https://programmers.co.kr/learn/courses/30/lessons/72410
예상 난이도
S5
알고리즘 분류
구현 or BFS/DFS
풀이
우선 단순 케이스 분류로 해결하는 풀이를 먼저 보겠습니다. 거리가 2 이하인 두 지점의 배치는 이렇게 3가지의 종류가 있습니다.
Case 1과 같은 배치가 나오면 바로 거리두기가 위배되었음을 확인 가능합니다.
Case 2와 같은 배치에서는 두 군데의 ? 지점이 모두 파티션인지 확인해야 합니다.
Case 3에서는 한 군데의 ? 지점이 파티션인지 확인해야 합니다.
각 응시자의 위치에 대해 Case 1, 2, 3번에 대응되는 위치들을 확인하면서 거리두기가 위배된 곳이 있는지 확인하면 됩니다. 여러 위치들을 하나하나 다뤄도 되지만 BFS/DFS에서 사용되는 방향 벡터를 이용하면 구현이 쉬워집니다. 자세한건 코드를 참고해주세요.
직접 구현을 하지는 않았지만, 각 응시자의 위치를 시작점으로 두고 BFS 혹은 DFS를 돌려 거리가 2 이내인 곳에 다른 응시자가 있는지 확인하는 풀이도 통과 가능합니다.
관련 강의
0x09강 - BFS
0x0A강 - DFS
'알고리즘 > Programmers' 카테고리의 다른 글
[2021 카카오 채용연계형 인턴십] Q5. 시험장 나누기 (C++, Python, Java) (0) | 2021.08.16 |
---|---|
[2021 카카오 채용연계형 인턴십] Q4. 미로 탈출 (C++, Python, Java) (3) | 2021.08.16 |
[2021 카카오 채용연계형 인턴십] Q3. 표 편집 (C++, Python, Java) (4) | 2021.08.16 |
[2021 카카오 채용연계형 인턴십] Q1. 숫자 문자열과 영단어 (C++, Python, Java) (0) | 2021.08.16 |
[2021 KAKAO Blind Recruitment] Q7. 매출 하락 최소화 (C++, Python, Java) (0) | 2021.08.15 |
[2021 KAKAO Blind Recruitment] Q6. 카드 짝 맞추기 (C++, Python, Java) (0) | 2021.08.15 |
Comments