본문 바로가기

Problem Solving

(135)
[ BOJ 백준 11729번 - 하노이 탑 이동 순서 ] 해설 및 코드 https://www.acmicpc.net/problem/11729 11729번: 하노이 탑 이동 순서 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 옮기려 한다. 한 번에 한 개의 원판만을 다른 탑으로 옮길 수 있다. 쌓아 놓은 원판은 항상 위의 것이 아래의 것보다 작아야 한다. 이 작업을 수행하는데 필요한 이동 순서를 출력하는 프로그램을 작성하라. 단, 이동 횟수는 최소가 되어야 한다. 아래 그림은 원판이 5 www.acmicpc.net 목적 세 개의 장대를 이용하여 첫 번째 장대에서 세 번째로 모든 원판을 옮겨야 한다. 접근법 1. 재귀식을 세워보자. -..
[ BOJ 백준 1405번 - 미친 로봇 ] 해설 및 코드 https://www.acmicpc.net/problem/1405 백준 1405번 미친로봇 1405번: 미친 로봇 첫째 줄에 N, 동쪽으로 이동할 확률, 서쪽으로 이동할 확률, 남쪽으로 이동할 확률, 북쪽으로 이동할 확률이 주어진다. N은 14보다 작거나 같은 자연수이고, 모든 확률은 100보다 작거나 같은 자연수 또는 0이다. 그리고, 동서남북으로 이동할 확률을 모두 더하면 100이다. www.acmicpc.net 목적 로봇의 이동경로가 단순(방문한 곳을 재방문 하지 않음)할 확률을 구하자. 접근법 1. 완전탐색 알고리즘으로,동서남북 네 방향으로 이동할 수 있는 모든 경우에 해당하는 확률의 합을 구한다. *주의 : cout.precision(10); 코드를 사용하여 문제 조건에 해당하는 오차 범위로 변..
[ BOJ 백준 17136번 - 색종이 붙이기 ] 해설 및 코드 백준 17136 - 색종이 붙이기 https://www.acmicpc.net/problem/17136 17136번: 색종이 붙이기 과 같이 정사각형 모양을 한 다섯 종류의 색종이가 있다. 색종이의 크기는 1×1, 2×2, 3×3, 4×4, 5×5로 총 다섯 종류가 있으며, 각 종류의 색종이는 5개씩 가지고 있다. 색종이를 크기가 10×10인 종이 위에 붙이려고 한다. 종이는 1×1 크기의 칸으로 나누어져 있으며, 각각의 칸에는 0 또는 1이 적혀 있다. 1이 적힌 칸은 모두 색종이로 덮여져야 한다. 색종이를 붙일 때는 종이의 경계 밖으로 나가서는 안되고, 겹쳐 www.acmicpc.net 목적 1×1, 2×2, 3×3, 4×4, 5×5의 총 다섯 종류의 색종이를 이용하여, 10x10 크기의 종이에 1이 ..
[ BOJ 백준 1035번 - 조각 움직이기 ] 해설 및 코드 https://www.acmicpc.net/problem/1035 목적 5x5 크기의 보드에서 최대 5개의 조각을 움직여 서로 인접하도록 만드는 최소 이동 횟수를 구한다. 접근법 1. 다음과 같은 순으로 조각들의 가능한 모든 위치를 검사한다. 2. 위와 같이 배치한 조각들이 서로 인접해 있는지 검사한다. (좌측 최상단에 있는 조각을 기준으로 dfs 방식으로 인접한 조각의 개수를 구하고 전체 조각의 개수와 비교) 3. 모든 조각이 서로 인접해있다면 조각 별 이동거리를 합하여 최소 이동거리를 갱신한다. 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 31 32 33 34 35 36 37 38 39 40 41 42..
[ BOJ 백준 1339번 - 단어 수학 ] 해설 및 코드 https://www.acmicpc.net/problem/1339 목적 GCF + ACDEB를 계산한다고 할 때, 합을 최대로 만들기 위해 A = 9, B = 4, C = 8, D = 6, E = 5, F = 3, G = 7로 결정한다. 접근법 1. 각 단어의 알파벳 정보를 각 자리수를 고려하여 1*10^n의 값으로 대체하여 저장한다. 계산 하려는 수식은 GCF + ACDEB로, 우선은 다음과 같이 사용하고자 하는 알파벳 개수 만큼의 배열을 준비한다. 이제 단어를 하나씩 가지고 배열의 값을 갱신해 나간다. 첫번째 단어인 GCF에서 G,C,F 각각은 100,10,1의 자리에 위치해 있다. 다음과 같이 배열을 갱신한다. 같은 방법으로, 두번째 단어인 ACDEB로 배열을 갱신하면 다음과 같다. 2. 모든 단어..
[ BOJ 백준 1344번 - 축구 ] 해설 및 코드 https://www.acmicpc.net/problem/1344 목적 축구 경기 90분 동안 적어도 한 팀이 골을 소수로 득점할 확률을 구한다. 접근법 1. 총 18개의 간격에서(90분 경기를 5분 간격으로 나눴기 때문..) 소수 아닌 갯수의 골을 넣을 확률 계산 2. 중학교에서 배운 공식을 이용한다. ex) 득점할 확률이 a이고, 18개 중 4개의 득점을 할 확률 = 18C4 * a^4 * (1-a)^14 3. nCr에 해당하는 조합은 파스칼의 삼각형 공식으로 구한다. 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 31 32 33 34 35 36 37 38 39 #include #include #incl..
[ BOJ 백준 4574번 - 스도미노쿠 ] 해설 및 코드 https://www.acmicpc.net/problem/4574 목적 스도미노쿠의 9x9 그리드에 스도쿠 규칙에 따라, (1+2, 1+3, 1+4, 1+5, 1+6, 1+7, 1+8, 1+9, 2+3, 2+4, 2+5, ...)와 같은 도미노 타일 36개를 채워야한다. 접근법 1. 0,0~8,8까지의 범위에서, i, j에 해당하는 좌표를 순서대로 방문 2. 해당 좌표에 놓을 수 있는 타일을 상하좌우 네 방향으로 인접한 좌표까지 고려하여 추려낸다. 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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 5..