본문 바로가기

백준13

[백준] 1600번 : 말이 되고픈 원숭이 (C++) https://www.acmicpc.net/problem/1600 1600번: 말이 되고픈 원숭이 첫째 줄에 정수 K가 주어진다. 둘째 줄에 격자판의 가로길이 W, 세로길이 H가 주어진다. 그 다음 H줄에 걸쳐 W개의 숫자가 주어지는데, 0은 아무것도 없는 평지, 1은 장애물을 뜻한다. 장애물이 있 www.acmicpc.net 최단 거리를 구하는 문제이기 때문에 BFS로 구현하였다. 평소 하던대로 BFS 구현은 금방하였지만, 메모리초과 문제가 떠버렸다. 보통 bfs문제에서는 한번 방문한 곳은 지나가지 않도록 로직을 구현했지만, 이 문제에서는 경우에 따라 방문했던 곳이더라도 나이트의 이동 수에 따라 정답 경로가 될수 있다! 따라서, 방문 배열을 2차원이 아닌 나이트의 이동수까지 포함한 3차원 배열로 구현해.. 2021. 9. 6.
[백준] 17142번 : 연구소3 (C++) (삼성 SW 기출) https://www.acmicpc.net/problem/17142 17142번: 연구소 3 인체에 치명적인 바이러스를 연구하던 연구소에 승원이가 침입했고, 바이러스를 유출하려고 한다. 바이러스는 활성 상태와 비활성 상태가 있다. 가장 처음에 모든 바이러스는 비활성 상태이고 www.acmicpc.net 브루트포스와 BFS 알고리즘을 사용하여 구현하였다. 맨 처음에 문제를 읽고 구현자체가 어려울 것 같진 않았지만, 테스트 케이스를 돌리다보니 예외처리와 효율성을 고려하는게 빡셌던 것 같다. (덕분에 디버깅만 거의 2시간 한것 같다ㅎㅎ) 애를 먹었던 부분은 "활성 바이러스가 비활성 바이러스가 있는 칸으로 가면 비활성 바이러스가 활성으로 변한다." 라는 조건이었다. 좀더 풀어서 설명해보자면, 비활성화된 바이러스.. 2021. 9. 3.
[백준] 10164번 : 격자상의 경로 https://www.acmicpc.net/problem/10164 10164번: 격자상의 경로 입력의 첫째 줄에는 격자의 행의 수와 열의 수를 나타내는 두 정수 N과 M(1 ≤ N, M ≤ 15), 그리고 ○로 표시된 칸의 번호를 나타내는 정수 K(K=0 또는 1 < K < N×M)가 차례로 주어지며, 각 값은 공백으 www.acmicpc.net 전에 비슷한 경로의 수 구하는 문제를 풀었던 기억이 있어서 DP로 금방 구현하였다. 이 문제에서 핵심은 O로 표시된 좌표를 꼭 지나가야된다는 것이다. 만약, 다음과 같은 사진에서 8을 꼭 지나야 한다면, 8을 기준으로 왼쪽 밑 & 오른쪽 위 좌표들은 계산할 필요도 없고 누적 경로수 계산에 포함시키면 안된다. (Check 함수로 구현하였다.) 전체코드는 아래와 .. 2021. 9. 3.
[백준] 10250번 : ACM 호텔 https://www.acmicpc.net/problem/10250 10250번: ACM 호텔 프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T 개의 테스트 데이터로 이루어져 있는데 T 는 입력의 맨 첫 줄에 주어진다. 각 테스트 데이터는 한 행으로서 H, W, N, 세 정수 www.acmicpc.net ICPC 예선 기출문제 중 제일 쉬운 문제이다. N이 H로 딱 떨어지는 경우만 유의해주자!! #include using namespace std; int T,H,W,N; int hotel[100][100]; int X, Y; int main() { cin >> T; while (T--) { cin >> H >> W >> N; Y = (N % H==0? H : N % H); X = (N.. 2021. 9. 2.
[백준] 5638번 : 이진 검색 트리 (C++) https://www.acmicpc.net/problem/5639 5639번: 이진 검색 트리 트리를 전위 순회한 결과가 주어진다. 노드에 들어있는 키의 값은 106보다 작은 양의 정수이다. 모든 값은 한 줄에 하나씩 주어지며, 노드의 수는 10,000개 이하이다. 같은 키를 가지는 노드는 없다 www.acmicpc.net 이진 검색트리 문제이다. 간단하게 리뷰를 해보자면, 전위 순회(루트→왼쪽→오른쪽) : 50 30 24 5 28 45 98 52 60 후위 순회(왼쪽→오른쪽→루트) : 5 28 24 45 30 60 52 98 50 중위 순회(왼쪽→루트→오른쪽) : 5 24 28 30 45 50 52 60 98 코드는 정형화된 형식이니 기억하자! #include using namespace std; st.. 2021. 9. 1.
[백준] 15685번 : 드래곤 커브 (C++) https://www.acmicpc.net/problem/15685 15685번: 드래곤 커브 첫째 줄에 드래곤 커브의 개수 N(1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 드래곤 커브의 정보가 주어진다. 드래곤 커브의 정보는 네 정수 x, y, d, g로 이루어져 있다. x와 y는 드래곤 커 www.acmicpc.net 삼성 SW 역량 테스트 기출문제이다. 드래곤 커브의 방향은 다음과 같다. 0 (동쪽) 1 (북쪽) 2 (서쪽) 3 (남쪽) 그리고 각 세대의 드래곤 커브는 일정한 방향 규칙을 갖는다. 0세대 : 0 1세대 : 0 1 2세대 : 0 1 2 1 3세대 : 0 1 2 1 2 3 2 1 4세대 : 0 1 2 1 2 3 2 1 2 3 0 3 2 3 2 1 N세대 : (N-1)세대.. 2021. 8. 29.