BFS 99

백준 3184번 양 C++

https://www.acmicpc.net/problem/3184 3184번: 양 첫 줄에는 두 정수 R과 C가 주어지며(3 ≤ R, C ≤ 250), 각 수는 마당의 행과 열의 수를 의미한다. 다음 R개의 줄은 C개의 글자를 가진다. 이들은 마당의 구조(울타리, 양, 늑대의 위치)를 의미한다. www.acmicpc.net bfs #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using int64 = long long; int dRow[4] = { -1,0,1,0 }; int dCol[4] ..

알고리즘 2023.06.30

백준 3187번 양치기 꿍 C++

https://www.acmicpc.net/problem/3187 3187번: 양치기 꿍 입력의 첫 번째 줄에는 각각 영역의 세로와 가로의 길이를 나타내는 두 개의 정수 R, C (3 ≤ R, C ≤ 250)가 주어진다. 다음 각 R줄에는 C개의 문자가 주어지며 이들은 위에서 설명한 기호들이다. www.acmicpc.net bfs #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using int64 = long long; int dRow[4] = { -1,0,1,0 }; int dCol[4] ..

알고리즘 2023.06.29

백준 18404번 현명한 나이트 C++

https://www.acmicpc.net/problem/18404 18404번: 현명한 나이트 첫째 줄에 N과 M이 공백을 기준으로 구분되어 자연수로 주어진다. (1 ≤ N ≤ 500, 1 ≤ M ≤ 1,000) 둘째 줄에 나이트의 위치 (X, Y)를 의미하는 X와 Y가 공백을 기준으로 구분되어 자연수로 주어진다. ( www.acmicpc.net 매번마다 bfs를 돌리면 시간초과가 나기 때문에 최소 거리를 저장하는 배열을 만든다. #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using name..

알고리즘 2023.06.04

백준 21938번 영상처리 C++

https://www.acmicpc.net/problem/21938 21938번: 영상처리 화면의 세로 $N$, 가로 $M$ 값이 공백으로 구분되어 주어진다. 두 번째 줄부터 $N + 1$줄까지 $i$번째 가로를 구성하고 있는 픽셀의 $R_{i,j}$, $G_{i,j}$, $B_{i,j}$의 값이 공백으로 구분되어 총 $M$개 주어진 www.acmicpc.net bfs로 풀수있는 간단한 문제인데, 입력 방식이 조금 특이했다. #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespac..

알고리즘 2023.05.25

백준 16509번 장군 C++

https://www.acmicpc.net/problem/16509 16509번: 장군 오랜만에 휴가를 나온 호근이는 문득 동아리방에 있는 장기가 하고 싶어졌다. 하지만 장기를 오랫동안 하지 않은 탓인지 예전에는 잘 쓰던 상을 제대로 쓰는 것이 너무 힘들었다. 호근이를 위해 www.acmicpc.net bfs 사용, 도착지점이 아닌 경로상에 말이 있으면 가지 못하도록 한다. #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using int64 = long lon..

알고리즘 2023.05.16

백준 16397번 탈출 C++

https://www.acmicpc.net/problem/16397 16397번: 탈출 첫 번째 줄에 N (0 ≤ N ≤ 99,999), T (1 ≤ T ≤ 99,999), G (0 ≤ G ≤ 99,999)가 공백 하나를 사이에 두고 주어진다. 각각 N은 LED로 표현된 수, T는 버튼을 누를 수 있는 최대 횟수, G는 탈출을 위해 똑같이 www.acmicpc.net bfs #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using int64 = long lon..

알고리즘 2023.03.23

백준 20208번 진우의 민트초코우유 C++

https://www.acmicpc.net/problem/20208 20208번: 진우의 민트초코우유 첫번째 줄에 민초마을의 크기인 N과 진우의 초기체력 M, 그리고 민트초코우유를 마실때 마다 증가하는 체력의 양 H가 공백을 두고 주어진다. N, M, H는 모두 10보다 작거나 같은 자연수이다. 두번째 www.acmicpc.net bfs, 어떤 위치의 우유를 먹었는지는 비트를 통해 판별 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using int64 = l..

알고리즘 2023.03.01

백준 18513번 샘터 C++

https://www.acmicpc.net/problem/18513 18513번: 샘터 첫째 줄에 자연수 N과 K가 공백을 기준으로 구분되어 주어진다. (1 ≤ N, K ≤ 100,000) 둘째 줄에 N개의 샘터의 위치가 공백을 기준으로 구분되어 정수 형태로 주어진다. (-100,000,000 ≤ 샘터의 위치 ≤ www.acmicpc.net 샘터 주변의 위치부터 탐색하면 된다. 샘터를 기준으로 -1, +1씩 검사하면서 지을 수 있으면 짓고 큐에 그 위치를 넣고 하면서 k개의 집을 지었을 때 불행도를 합치면 된다. #include #include #include #include #include #include #include #include #include #include #include #include ..

알고리즘 2023.02.24

백준 13265번 색칠하기 C++

https://www.acmicpc.net/problem/13265 13265번: 색칠하기 각 테스트 케이스에 대해서 possible 이나 impossible 을 출력한다. 2 가지 색상으로 색칠이 가능하면 possible. 불가능하면 impossible 이다. www.acmicpc.net dfs로 2개의 색을 번갈아가며 칠하다가 불가능한 경우가 나오면 dfs 종료 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using int64 = long long; in..

알고리즘 2023.02.14

백준 2194번 유닛 이동시키기 C++

https://www.acmicpc.net/problem/2194 2194번: 유닛 이동시키기 첫째 줄에 다섯 개의 정수 N, M(1 ≤ N, M ≤ 500), A, B(1 ≤ A, B ≤ 10), K(0 ≤ K ≤ 100,000)가 주어진다. 다음 K개의 줄에는 장애물이 설치된 위치(행 번호, 열 번호)가 주어진다. 그 다음 줄에는 시작점의 www.acmicpc.net 일반적인 bfs에 유닛의 영역에 장애물이 있는지 확인하는 로직을 추가하면 된다. 처음에는 이동할때 마지막 행, 열만 검사하려고 해서 좀 틀리다가 전체를 검사하도록 수정했다. #include #include #include #include #include #include #include #include #include #include #i..

알고리즘 2023.02.09