Algorithm283 [BOJ]2589번: 보물섬 https://www.acmicpc.net/problem/2589 문제 해결의 핵심은 그래프 크기가 작다는 것입니다. W, H제한이 50이므로 모든 칸에 대해 새롭게 BFS를 돌아도 시간복잡도는 O(50^4) 이므로 시간초과가 나지 않습니다. W*H칸에 존재하는 모든 육지에 대해 BFS를 돌아서 자신이 가장 멀리 도달한 지점을 저장해놓습니다. 이렇게 멀리 도달한 지점들의 MAX값을 구하면 그게 정답입니다. https://github.com/cottory/algorithm/blob/master/BOJ/BOJ2589.cc 2020. 8. 22. [BOJ]5427번: 불 https://www.acmicpc.net/problem/5427 매 초 마다 불이 붙어있는 모든 칸이 다른 칸으로 전파 될 수 있습니다. 그리고 상근이는 불이 옮겨 붙을 칸으로 이동할 수 없습니다. 그러므로 맨 처음 큐에 넣어줄 때 불이 있는 칸이 상근이가 있는 칸보다 먼저 넣어주면 됩니다. 큐 사이즈만큼만 루프를 돌면서 매 초마다 불이 이동하는 칸과 상근이가 이동하는 칸을 확장해 나가면 됩니다. 코드: https://github.com/cottory/algorithm/blob/master/BOJ/BOJ5427.java 2020. 8. 22. [BOJ]2644번: 촌수계산 https://www.acmicpc.net/problem/2644 한 명의 사람(노드)는 자신을 기준으로 부모 / 자식의 관계를 가질 수 있습니다. 부모는 단 한 명이고, 자식은 여러명일 수 있으니 아래와 같이 표현할 수 있습니다. int parent[105]; vector child[105]; 그래서 특정 노드를 기준으로 부모, 자식 방향으로 BFS를 돌아서 목적 노드에 도달한다면 걸린 거리만큼 촌수를 계산해주면 되고, 목적 노드에 도달하지 못하면 -1을 출력하면 됩니다. 코드: https://github.com/cottory/algorithm/blob/master/BOJ/BOJ2644.cc 2020. 8. 22. [BOJ]1946번: 신입 사원 https://www.acmicpc.net/problem/1946 바킹독님의 풀이를 참고하여 해결하였습니다.(https://blog.encrypted.gg/120) 등수가 중복되지 않고 1~N으로 분포해있습니다. 때문에 따로 정렬을 하지 않아도 유일한 값입니다. grade[i]라는 변수에 서류심사 성적순으로 인원들을 넣어놓습니다. grade[i]를 앞에서 순회하면 서류 심사 성적이 높은 인원부터 탐색하는 것입니다. grade를 앞에서부터 돌면서 지금까지 나온 가장 높은 면접 성적 등수(minInterviewRank)를 저장합니다. 그리고 그 값과 i 번째 사원의 면접 성적 등수를 비교합니다. 1. i번째 사원의 면접 성적 등수가 더 좋으면 i번째 사원은 신입 사원에 넣을 수 있습니다. (cnt++) 2... 2020. 8. 22. 이전 1 ··· 36 37 38 39 40 41 42 ··· 71 다음