공통
인덴테이션이 3depth 이상 깊어질 경우, continue로 끊어주는 것이 좋음 (가독성을 높이기 위해)
- 16234 (인구 이동)
- 인구 이동 가능한 연합 탐색 (bfs), 연합 내의 인구 이동, 하루 지나면서 연합 생기는지 탐색 (반복문) 부분들 함수로 잘 나눠서 구현하기
- 인구 이동을 한 나라를 큐로 관리해서 그 전에 인구 이동이 일어난 나라만 bfs 탐색 진행하면 시간을 훨씬 줄일 수 있음
- 13422 (도둑)
- for문으로 반복문 돌린다면, left, right 쓸 필요 없이 반복문 인자로 관리할 수 있음
- 도둑이 훔칠 수 있는 경우의 수는 슬라이딩 윈도우 과정에서 바로 검사
- 모듈러 연산 활용해서 원형 구현
- 10026 (적록색약)
- 구역의 개수 세는 부분은 2번 반복되므로 함수화해서 사용
- 2667 (단지번호붙이기)
- 19538 (루머)
- 주변인 중 절반 이상이 루머를 믿는지 확인할 때는 배열을 통해서 관리하면 O(1)으로 확인가능 (현재 정점(루머 유포자)에서 다음 정점을 탐색한다는 건 다음 정점이 주변인(현재 정점)에서 루머 믿는 사람이 1명 증가한 것과 같음)
- 루머 퍼뜨리기를 동시에 하려고 연산 나눌 필요 없이 bfs 탐색으로 한 번에 해결 가능
- 1697 (숨바꼭질)
- visited 배열을 방문 체크와 동시에 시간을 저장해서 관리하면 queue를 pair 쌍으로 관리하지 않아도 됨
- 11725 (트리의 부모 찾기)
- 인접 리스트 활용해야 함. 인접 리스트 사용 시 열의 크기는 입력으로 들어오는 것에 따라 동적 할당됨. 인접 행렬 사용 시 메모리초과!!!!