
https://www.acmicpc.net/problem/17071 17071번: 숨바꼭질 5 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 500,000)에 있고, 동생은 점 K(0 ≤ K ≤ 500,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 www.acmicpc.net 진짜 어려웠다. 한 2~3일? 고민했는데도 어려워서 질문 게시판 보고 힌트를 얻어서 풀었다. 엄청 깔끔하게 짠 코드는 아니지만 내 블로그 기록의 목적은 공부용이니까 우선 남겨둔다. 처음 내가 생각했던 방법은 다음과 같았다. 1. 수빈이를 BFS할 배열 subin과 동생을 BFS할 배열 brother를 각각 만들어서, 수빈이 1초, 동생 1초 이렇게 진행한다. ..

https://www.acmicpc.net/problem/16920 16920번: 확장 게임 구사과와 친구들이 확장 게임을 하려고 한다. 이 게임은 크기가 N×M인 격자판 위에서 진행되며, 각 칸은 비어있거나 막혀있다. 각 플레이어는 하나 이상의 성을 가지고 있고, 이 성도 격자판 위 www.acmicpc.net 풀고 나니까 그렇게 어렵지는 않은 문제였는데, 시간 초과때문에 엄청 고생했다. 결국 다른 분께 도움을 얻었다. 내가 처음 생각한 방법은 다음과 같았다. 1. 1번 정점을 BFS를 돌려서 시작점에 추가한다. 2. 해당 정점을 가지고 이동할 수 있는 횟수 S[1]번이 되기 전까지 이동한다. 3. 1,2번을 1~p번에 대해 반복한다. 였는데, 계속 시간 초과가 났다. 나중에 알게 됐는데, 1번 과정에..

https://www.acmicpc.net/problem/16933 16933번: 벽 부수고 이동하기 3 첫째 줄에 N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 1,000), K(1 ≤ K ≤ 10)이 주어진다. 다음 N개의 줄에 M개의 숫자로 맵이 주어진다. (1, 1)과 (N, M)은 항상 0이라고 가정하자. www.acmicpc.net 벽 부수고 이동하기 1,2번에 이어 3번이다. 1번이 벽을 1개만 부술 수 있었고, 2번은 벽을 K(1 m >> k; char c; for (int i = 0; i > c; board[i][j] = c - '0'; } } } int solve() { q.push({ 0,0,0,t..

https://www.acmicpc.net/problem/14442 14442번: 벽 부수고 이동하기 2 첫째 줄에 N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 1,000), K(1 ≤ K ≤ 10)이 주어진다. 다음 N개의 줄에 M개의 숫자로 맵이 주어진다. (1, 1)과 (N, M)은 항상 0이라고 가정하자. www.acmicpc.net https://www.acmicpc.net/problem/1600 문제와 거의 유사한 문제인 것 같다. https://www.acmicpc.net/problem/2206 문제에서는 벽을 1개만 부술 수 있었는데, 이 문제는 벽을 k개 부술 수 있다. https://pl-are.tistory.com/26 에서 풀었던 방법처럼, 3차원 배열을 k개만큼 선언해서 벽을..

https://www.acmicpc.net/problem/13913 13913번: 숨바꼭질 4 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net https://www.acmicpc.net/problem/1697 문제와 똑같이 풀면 되는데 방문했던 경로를 출력해야 하는 문제이다. 1차원 배열에 대해 BFS를 수행한다고 생각하고, -1일때, +1일때, *2일때를 조건문으로 조사하면 된다. 내가 생각한 방법은 다음과 같다. 1. 먼저 -1, +1, *2에 대해 BFS를 수행해서 최단거리가 몇초인지 구한다. (*..

https://www.acmicpc.net/problem/1600 1600번: 말이 되고픈 원숭이 첫째 줄에 정수 K가 주어진다. 둘째 줄에 격자판의 가로길이 W, 세로길이 H가 주어진다. 그 다음 H줄에 걸쳐 W개의 숫자가 주어지는데, 0은 아무것도 없는 평지, 1은 장애물을 뜻한다. 장애물이 있 www.acmicpc.net 체스의 나이트와 같은 이동방식을 가지는 말이 있고(말은 장애물을 뛰어넘을 수 있음) 상하좌우 1칸씩 이동할 수 있는 원숭이가 있다. 원숭이는 원래는 상하좌우 1칸씩만 움직일 수 있지만 k번만큼 말처럼 이동할 수 있다. 이 때, (0,0)에서 (h-1,w-1) [w,h의 위치가 반대임을 주의] 까지의 최단경로를 구하는 문제이다. 내가 생각한 방법은 다음과 같다. 1. 최대 k번 말처..

https://www.acmicpc.net/problem/2146 2146번: 다리 만들기 여러 섬으로 이루어진 나라가 있다. 이 나라의 대통령은 섬을 잇는 다리를 만들겠다는 공약으로 인기몰이를 해 당선될 수 있었다. 하지만 막상 대통령에 취임하자, 다리를 놓는다는 것이 아깝다 www.acmicpc.net 여러 개의 섬에 섬과 섬을 이을 다리를 놓을 때, 여러 방법이 있겠지만 이 문제에서는 가장 거리가 짧은 한 개의 다리만을 선택해서 놓기로 한다. 이때 가장 짧은 다리의 길이를 구하는 문제이다. 나는 다음과 같은 방법으로 풀었다. 1. 먼저 한 섬에 대해 BFS를 하면서 그 섬과 인접한 바다의 좌표를 모두 저장 2. 이후 1에서 저장한 좌표를 가지고 아직 방문하지 않은 섬을 만날 때까지 BFS를 하고, ..

https://www.acmicpc.net/problem/2573 2573번: 빙산 첫 줄에는 이차원 배열의 행의 개수와 열의 개수를 나타내는 두 정수 N과 M이 한 개의 빈칸을 사이에 두고 주어진다. N과 M은 3 이상 300 이하이다. 그 다음 N개의 줄에는 각 줄마다 배열의 각 행을 www.acmicpc.net BFS를 이용해서 푸는 문제이다. 이 문제는 (1) 빙산이 동시에 녹고, (2) 녹은 다음 시간이 흐르고 빙산이 나누어졌는지 확인해주어야 한다. 그래서 내가 생각한 방법은 다음과 같다. 1. 빙산을 동시에 녹인다. 2. 시간을 1년 더해준다. 3. 이후 BFS를 통해 빙산이 연결되어있는지 확인한 후, 연결되어있지 않거나 빙산이 1개 뿐이라면 시간을 리턴한다. 4. 만약 빙산이 연결되어있다면 ..

https://www.acmicpc.net/problem/6593 6593번: 상범 빌딩 당신은 상범 빌딩에 갇히고 말았다. 여기서 탈출하는 가장 빠른 길은 무엇일까? 상범 빌딩은 각 변의 길이가 1인 정육면체(단위 정육면체)로 이루어져있다. 각 정육면체는 금으로 이루어져 있어 www.acmicpc.net 크게 어려울만한 부분은 없는 BFS 문제이다. 좀 까다로운 부분이 있다면 3차원 배열을 써야 한다는 건데, 7569번 토마토를 풀었다면 풀 수 있다. (Tuple을 쓰면 좋다) 문자열 출력이라서 스펠링이나 띄어쓰기를 제대로 했는지 잘 봐야 하고(이것 때문에 3번 틀렸다;) 모든 입력이 0일 때 까지 테스트 케이스가 반복해서 주어진다는 것, 따라서 큐를 비워야 한다는 것 정도 알고 있으면 문제 푸는데 좀..

https://www.acmicpc.net/problem/2583 2583번: 영역 구하기 첫째 줄에 M과 N, 그리고 K가 빈칸을 사이에 두고 차례로 주어진다. M, N, K는 모두 100 이하의 자연수이다. 둘째 줄부터 K개의 줄에는 한 줄에 하나씩 직사각형의 왼쪽 아래 꼭짓점의 x, y좌표값과 오 www.acmicpc.net M,N,K가 주어지고 K개의 직사각형이 주어질 때, 직사각형 부분을 제외한 나머지 영역들의 개수와 넓이를 구하는 문제이다. 왼쪽 아래부터 (0,0) 시작이라 좀 헷갈릴 수 있는데 개의치 않고 풀어도 상관없다. 어떻게 풀지 조금 생각하다가, 시작 점이 여러개인 BFS 풀듯이 직사각형이 아닌 모든 점을 시작점으로 생각하고, 방문한 정점은 바로 빼버리면 되겠다 싶어서 그렇게 풀기로 ..
- Total
- Today
- Yesterday
- 2493
- 16933
- 1475
- 상범 빌딩
- 16920
- 구름톤챌린지
- 1251
- SWEA
- 3190번
- 5397
- 6603
- 숨바꼭질 5
- 벽 부수고 이동하기 3
- DX부문
- 2583
- 두 수의 합
- 6593
- 3273
- 17071
- BOJ
- 3197
- 2146
- 숨바꼭질 4
- PS
- 파핑파핑 지뢰찾기
- 확장 게임
- 벽 부수고 이동하기 2
- 9328
- 5427
- 백준
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |