BOJ(9)
-
[백준/1325/Java] 효율적인 해킹 - BFS/DFS 풀이
문제 www.acmicpc.net/problem/1325 1번 컴퓨터 순으로 신뢰한다고 생각해보겠습니다. 그러면 5번 컴퓨터를 해킹하면 더 이상 해킹할 수 있는 컴퓨터가 없으면 ⑤ = 0 입니다. 3번 컴퓨터를 해킹하면 3을 신뢰하는 5번 컴퓨터를 해킹할 수 있으므로 ③ = 1 입니다. 1번 컴퓨터를 해킹하면 3을 해킹할 수 있고 3번 컴퓨터를 신뢰하고 5까지 해킹할 수 있습니다. 따라서, ① = 2입니다. 예제풀이 백준온라인 문제의 예제에서 나온 번호를 그래프로 그려보면 이렇게 나옵니다. 신뢰하는 관계를 방향대로 읽어가면서 해킹가능한 수를 하나씩 더하면 각 컴퓨터별로 동시에 해킹할 수 있는 개수가 나옵니다. 각 컴퓨터 번호별로 동시에 해킹할 수 있는 수는 제가 소스에서 주석처리를 풀면 확인할 수 있도록..
2021.02.01 -
[백준/2178/Java] 미로탐색 - BFS 풀이
문제 www.acmicpc.net/problem/2178 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net 문제를 먼저 풀고 오신 다음에 풀이를 보시는 것을 추천드립니다. 이 문제의 풀이는 BFS/DFS 외에도 다양한 방법이 있을 수 있으며 제가 보여드리는 풀이는 그 중 하나입니다. 문제분석 1은 이동할 수 있는 칸이고, 0은 이동할 수 없는 칸입니다. (1, 1)에서 출발하여 (N, M) 위치로 이동할 때 지나야 하는 최소 칸 수를 구해야 합니다. 입력 첫째 줄에 N, M이 주어집니다. (2 0 && d[i][j - 1] == '1' && ..
2021.01.29 -
[백준/1697/Java] 숨바꼭질 - BFS 풀이
BFS (너비 우선 탐색, Breadth-First Search) 알고리즘에서 기본적인 문제 하나를 풀어보도록 하겠습니다. 문제 1697번: 숨바꼭질 (acmicpc.net) 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net 문제를 먼저 풀고 오신 다음에 풀이를 보시는 것을 추천드립니다. 이 문제의 풀이는 BFS 외에도 다양한 방법이 있을 수 있으며 제가 보여드리는 풀이는 그 중 하나입니다. 이 글은 BFS 알고리즘으로 1차원 배열을 사용해서 푸는 것을 알아보는 글이라서 BFS로 풀어..
2021.01.21