본문 바로가기
반응형

BFS3

[BOJ 1463] 1로 만들기 (2가지 풀이/DP/BFS) (C++) www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 구현 방법 (DP 풀이) 이 문제는 전형적인 DP(Dynamic Programming) 문제입니다. DP문제를 해결하는 순서는 다음과 같습니다. 테이블 정의하기 점화식 찾기 초기값 정하기 이 문제에서 위 순서를 따라 답을 찾아보겠습니다. 테이블 정의하기 이 문제에서 테이블은 "D [i] = i를 1로 만들기 위해 필요한 연산 사용 횟수의 최솟값"이라고 정의할 수 있습니다. 테이블이란 이 문제에서 사용할 배열과 배열에 들어가는 각 값들의 의미입니다. 즉, 배열 d의 i번째에 들어가는 값은, i를 1로 만들기 위해 필요한 연산 .. 2021. 5. 1.
[BOJ 7562] 나이트의 이동 (C++) www.acmicpc.net/problem/7562 7562번: 나이트의 이동 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 www.acmicpc.net 구현 방법 이 문제의 분류는 BFS입니다. BFS문제는 보통 상, 하, 좌, 우로 움직이는데, 이 문제는 나이트의 이동 방식으로 8가지 방법을 확인해야 합니다. 로직 자체는 BFS와 동일하지만, 이동 방향을 8가지로 한다는 차이점 뿐입니다. 보통의 BFS는 이동을 위해 다음과 같은 배열을 선언합니다. int dx[4] = {1, 0, -1, 0} int dy[4] = {0, 1, 0, -1} 하지만 나이트의 이동.. 2021. 4. 9.
[BOJ 4179] 불! (C++) www.acmicpc.net/problem/4179 4179번: 불! 입력의 첫째 줄에는 공백으로 구분된 두 정수 R과 C가 주어진다. 단, 1 ≤ R, C ≤ 1000 이다. R은 미로 행의 개수, C는 열의 개수이다. 다음 입력으로 R줄동안 각각의 미로 행이 주어진다. 각각의 문 www.acmicpc.net 구현 방법 이 문제는 BFS(Breadth First Search)를 활용한 문제입니다. 기본적인 BFS문제는 Flood Fill 같이 하나의 탐색점을 두고 풀 수 있는데, 이 문제는 불, 지훈이 각각 두 번의 BFS로직을 구현해야 합니다. BFS, 즉 너비 우선 탐색은 다음과 같은 알고리즘을 따릅니다. 시작하는칸을 큐에 넣고 방문했다는 표시 남김 큐의 front를 꺼내고 해당 원소의 상, 하, .. 2021. 2. 28.
반응형