분류 전체보기127 백준 알고리즘: 2636번 치즈 문제 정보 2636번: 치즈 아래 과 같이 정사각형 칸들로 이루어진 사각형 모양의 판이 있고, 그 위에 얇은 치즈(회색으로 표시된 부분)가 놓여 있다. 판의 가장자리(에서 네모 칸에 X친 부분)에는 치즈가 놓 www.acmicpc.net 핵심 BFS(너비 우선 탐색)을 사용하여 문제를 풀이한다! 이를 사용하는 근거는, 치즈 조각은 한 시간이 지날때 마다 점차 녹아가며 우리가 구해야 하는 것은 모든 경로를 탐색하는 것이 아닌 각자의 위치(공기)에서 녹일 수 있는 치즈를 천천히 녹여가며 모든 치즈가 녹는 데에 걸린 시간과 한 시간 전에 남아있는 치즈 조각을 구하는 것이기 때문이다 사실상 이를 떠올리는 것은 어렵지는 않고, 좀 까다로웠던 것은 (0,0) 부터 맵을 탐색하기 시작하여 0(공기)이면 큐에 추가하고.. 알고리즘/Java 2023. 11. 22. 백준 알고리즘: 9466번 텀 프로젝트 문제 정보 9466번: 텀 프로젝트 이번 가을학기에 '문제 해결' 강의를 신청한 학생들은 텀 프로젝트를 수행해야 한다. 프로젝트 팀원 수에는 제한이 없다. 심지어 모든 학생들이 동일한 팀의 팀원인 경우와 같이 한 팀만 있을 www.acmicpc.net 핵심 DFS(깊이 우선 탐색)으로 순환을 이루는 학생들을 찾아야 한다 visited 배열을 사용하여 방문한 학생들을 재방문하지 않도록 처리해 주어야 하며 재귀적으로 노드들을 탐색할 때, 해당 부분집합에 순환되는 부분이 존재할 수 있으므로 이를 골라내어 카운팅해주는 방식이 요구되는 것 같다 처음에는, 재귀 호출로 구한 여러명의 학생들 중 일부만 순환 관계에 놓여있다고 했을 때 순환을 이루는 학생들에 대해서만 방문 표시를 해주고, 나머지 학생들에 대해서는 방문.. 알고리즘/Java 2023. 11. 15. 백준 알고리즘: 7576번 토마토 문제 정보 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 핵심 역시 이전 문제와 비슷한 BFS(너비 우선 탐색)을 활용하여 풀이하는 문제이다 이 문제에서 하루가 지나면 익은 토마토의 상하좌우의 익지 않은 토마토들은 익은 토마토로 변하게 되는데, 모든 익지 않은 토마토가 익은 토마토가 될 때까지의 최소 날짜를 출력하는 것이다 하지만, 1. 익지 않은 토마토(0)가 모두 익은 토마토(1)로 변했음을 어떻게 파악할지 2. 익은 토마토로 변했을때 최소 날짜는 어떻게 카운팅하는 것이 좋을지 이 두가지.. 알고리즘/Java 2023. 11. 14. Try with Resource & Suppressed Exception Try with Resource 어떤 언어에서든, 자원의 사용 후 반환은 매우 중요한 일이다 자원을 효율적으로 사용하기 위해서는, 우리는 사용 후 반드시 자원을 반환할 필요가 있다 일반적으로 우리는, 자원을 사용하고 반환하는 코드를 다음과 같이 try-catch를 위와 같은 형식으로 작성해왔을 것이다 Socket socket = null; try { socket = new Socket("localhost", port); System.out.println("Port " + port + "is open"); socket.close(); } catch(IOException e) { // do something } 하지만 위의 경우에 만약 Socket Instance를 생성하는 도중에, Exception이 발생.. Dev/Java 2023. 11. 13. 백준 알고리즘: 2206번 벽 부수고 이동하기 문제 정보 2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로 www.acmicpc.net 핵심 얼마나 효율적으로 케이스를 분리해서 문제를 풀이하는가.. 가 중요한 것 같다 (모든 문제가 그렇지만) 이 문제는 BFS(너비 우선 탐색)을 활용하여 풀이하는 문제이며 모든 경우의 수를 확인해야 하는 문제가 아니고 최단 거리를 구하는 문제이기 때문에 DFS는 적합하지 않을 것 같다는 판단을 하였다 중간에 막혔던 부분이 있고, 그 부분을 해결해 나갔던 과정과 함께 풀이를 해보도록 하겠다 살짝 소개하자면, 벽은 반드시 한 개만.. 알고리즘/Java 2023. 11. 13. 이전 1 ··· 6 7 8 9 10 11 12 ··· 26 다음