본문 바로가기

알고리즘/백준11

[BOJ 백준] 17090 - 미로 탈출하기, Java(자바) 문제 https://www.acmicpc.net/problem/17090 17090번: 미로 탈출하기 크기가 N×M인 미로가 있고, 미로는 크기가 1×1인 칸으로 나누어져 있다. 미로의 각 칸에는 문자가 하나 적혀있는데, 적혀있는 문자에 따라서 다른 칸으로 이동할 수 있다. 어떤 칸(r, c)에 적힌 문 www.acmicpc.net 풀이 dfs + dp로 풀이했다. delta 배열의 인덱스에 맞춰 map 배열을 초기화한다. 배열을 돌면서 아직 방문하지 않은 곳이면 칸에 적힌대로 이동하고, 탈출할 수 있으면 지나온 경로를 모두 true로, 탈출할 수 없으면 지나온 경로를 모두 false로 나타내면서 탈출 가능한 칸의 수를 카운팅한다. 코드 import java.util.*; import java.io.*;.. 2023. 3. 4.
[BOJ 백준] 1991 - 트리 순회, Java(자바) 문제 https://www.acmicpc.net/problem/1991 1991번: 트리 순회 첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파 www.acmicpc.net 풀이 알파벳 순서대로 노드의 이름이 매겨지므로 노드의 개수 N 크기의 Node 배열을 만들고, A 노드부터 인덱스 순서대로 Node를 생성한다. 입력에 따라 왼쪽, 오른쪽 자식 노드를 연결하고 전위, 중위, 후위 순회한 결과를 각각 출력한다. order 함수 하나만으로 전위, 중위, 후위 순회 결과를 한 번에 호출할 수도 있다. 코드 import java.util.*; import.. 2023. 3. 4.
[BOJ 백준] 6068 - 시간 관리하기, Java(자바) 문제 https://www.acmicpc.net/problem/6068 6068번: 시간 관리하기 성실한 농부 존은 시간을 효율적으로 관리해야 한다는 걸 깨달았다. 그는 N개의 해야할 일에 (1 2023. 3. 3.
[BOJ 백준] 7576 - 토마토, Java(자바) 문제 https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 풀이 다음 날 익을 토마토를 큐에 담고, 남은 토마토가 없거나 더 이상 토마토가 익지 않을 때까지 bfs를 이용해 탐색한다. 코드 import java.util.*; import java.io.*; public class Main { public static void main(String args[]) throws Exception { BufferedReader in = ne.. 2023. 3. 2.