본문 바로가기

알고리즘/백준 문제풀이13

[백준 JAVA]13023 ABCDE 문제 13023번: ABCDE (acmicpc.net) 13023번: ABCDE 문제의 조건에 맞는 A, B, C, D, E가 존재하면 1을 없으면 0을 출력한다. www.acmicpc.net dfs를 활용해서 이어진 친구들을 세주었다. 풀이방법 무방향 그래프이기 때문에 배열 양쪽에 값을 넣어준다. list[to].add(from); list[from].add(to); 입력을 받고 dfs를 돌려준다. 인접한 경우를 재귀호출을 사용하며 count를 세준다. count가 5가되면(관계가 5명 이어지면) return 을 해주고 end를 true로 바꿔준다. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStre.. 2022. 9. 12.
[백준 JAVA & Python] 1260 DFS와 BFS 문제 1260번: DFS와 BFS (acmicpc.net) 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net bfs, dfs를 연습해보기 좋은 기본문제이다. 풀이방법 무방향 그래프이기 때문에, 배열 양쪽에 값을 넣어주는 것이 포인트이다. list[to].add(from); list[from].add(to); dfs는 순열을 사용해서, bfs는 큐를 사용해서 구현하였다. 코드 java import java.io.BufferedReader; import java.io.IOExc.. 2022. 9. 12.
[백준Java]2589 보물섬 문제 2589번: 보물섬 (acmicpc.net) 2589번: 보물섬 보물섬 지도를 발견한 후크 선장은 보물을 찾아나섰다. 보물섬 지도는 아래 그림과 같이 직사각형 모양이며 여러 칸으로 나뉘어져 있다. 각 칸은 육지(L)나 바다(W)로 표시되어 있다. 이 지도에서 www.acmicpc.net 기본적인 bfs문제였다. 한가지 주의해야할점은 한곳에서 bfs를 돌려주는 것이 아니라, 각 L마다 모두 bfs를 돌려줘야 한다는 것이었다. 풀이방법 x좌표, y좌표, count를 가지고 있는 Node를 만든다. 배열을 입력받고 L이 나올때마다 bfs 함수를 돌린다. 상, 하, 좌, 우를 확인하면서, nx>=0 && nx=0 && ny 2022. 9. 12.
[백준 JAVA]2206 벽 부수고 이동하기 문제 2206번: 벽 부수고 이동하기 (acmicpc.net) 2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로 www.acmicpc.net bfs문제지만 벽을 부수는 경우를 생각해야하는 문제였다. 벽을 부수고 간 경우가 특정 위치에서 먼저 도달하지만 최종적으로 부수지 않고 간 경우가 더 빠를 수 있다는 반례가 있다. 이 반례를 고려해주지 않는다면 test case의 답은 나오지만 아래와 같은 문제는 해결할 수 없다. 6 4 0000 1110 1000 0000 0111 0010 정답: 9 이를 해결하기 위해 3차원.. 2022. 9. 12.