Algorithm/BOJ 51

[백준 - 1713] 후보자 추천 - Java

문제 설명 1713번: 후보 추천하기 첫째 줄에는 사진틀의 개수 N이 주어진다. (1 ≤ N ≤ 20) 둘째 줄에는 전체 학생의 총 추천 횟수가 주어지고, 셋째 줄에는 추천받은 학생을 나타내는 번호가 빈 칸을 사이에 두고 추천받은 순서대 www.acmicpc.net 접근 방법 해당 문제는 당초에는 우선순위 큐를 이용하려고 했지만 poll() 또는 remove() 메서드 사용 시 기존에 내부 요소들의 순서가 변동되어 List 자료구조를 이용하여 문제를 해결했습니다. 우선 문제에 따르면 "특정 학생을 추천하면, 추천받은 학생의 사진이 반드시 사진틀에 게시되어야 한다"고 하는데, 이는 기존에 있던 학생의 사진을 빼고 새로운 학생의 사진을 넣어야하는 것을 의미합니다. 이때 기존에 어떤 학생의 사진을 빼냐가 중요..

Algorithm/BOJ 2022.06.03

[백준 - 2468] 안전 영역 - Java

문제 설명 2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 www.acmicpc.net 접근 방법 해당 문제는 브루트포스, BFS, DFS를 활용하여 문제를 해결할 수 있었습니다. 우선 땅의 높이 정보가 주어지면 강수량 0(비가 안 온 경우) ~ 100(대지의 최대 높이는 100이닌까) 모든 경우에 대해 안전 영역을 구하도록 했습니다. 이때 대지가 물에 잠긴 것을 표시하기 위해 BFS를 활용하여 땅의 높이 정보인 int형 2차원 배열을 탐색하도록 했습니다. 이때 boolean 2차원 배열을 통해 특정 노드에서의 값이 강수량 미만이라면 해당 물이..

Algorithm/BOJ 2022.05.23

[백준 - 1987] 알파벳 - Java

문제 설명 1987번: 알파벳 세로 R칸, 가로 C칸으로 된 표 모양의 보드가 있다. 보드의 각 칸에는 대문자 알파벳이 하나씩 적혀 있고, 좌측 상단 칸 (1행 1열) 에는 말이 놓여 있다. 말은 상하좌우로 인접한 네 칸 중의 한 칸으 www.acmicpc.net 풀이 회고 해당 문제는 DFS(깊이 우선 탐색)을 이용하여 풀 수 있었습니다. 깊이 우선 탐색을 통해 (0, 0) 지점에서 출발했을 때 탐색할 수 있는 모든 경로에 대해 탐색 종료 시의 이동한 칸 수를 검사하여 이들 중 가장 이동을 많이 한 횟수를 구하도록 했습니다. 다만, 이 문제의 경우 기존 깊이 우선 탐색이랑 다르게 접근했었던 방식이 있는데, 우선 별도의 방문 처리를 하지 않았다는 점이었습니다. 왜냐하면 모든 경로에 대해 검사해야하기 때문..

Algorithm/BOJ 2022.05.19

[백준 - 1238] 파티 - Java

문제 설명 1238번: 파티 첫째 줄에 N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 10,000), X가 공백으로 구분되어 입력된다. 두 번째 줄부터 M+1번째 줄까지 i번째 도로의 시작점, 끝점, 그리고 이 도로를 지나는데 필요한 소요시간 Ti가 들어 www.acmicpc.net 풀이 회고 문제에 따르면 각각의 1~N 마을에 사는 N명의 학생은 X(1 이상 ~ N 이하) 마을에 도착 후 본래 자기 마을로 돌아올 때 전체 걸리는 시간이 최단 시간으로 돌아오고자 합니다. 이때 문제에서 주어진 예시(테스트 케이스)에 대한 마을들 사이에 있는 M개의 단방향 도로들을 정리해보면 다음과 같습니다. 이때 각각의 학생들이 다시 자기 마을로 돌아오는데 걸리는 최소 시간을 정리해보면 다음과 같습니다. 마을 1에 사..

Algorithm/BOJ 2022.05.13

[백준 - 1018] 체스판 다시 칠하기 - Java

문제 설명 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 접근 방법 입력으로 주어진 M * N 크기의 보드로부터 8 * 8 크기 만큼 잘라 체스판을 구해야 하는데, 이때 구한 체스판은 각 칸이 검은색과 흰색 중 하나로 색칠되어 있고, 변을 공유하는 두 개의 사각형은 다른 색으로 칠해져 있어야 한다. 만일 잘랐던 체스판이 위 조건을 충족하면 별도로 색칠할 필요 없지만, 그렇지 않다면 최소 횟수로 다시 색칠해야 한다. 처음 이 문제에 접근했던 방법으로는 M * N 크기의 보드로부터 8 * 8 크기 만큼 ..

Algorithm/BOJ 2022.05.12