본문 바로가기

공부/알고리즘 문제풀이 기록46

[백준 14499] 주사위 굴리기 14499번: 주사위 굴리기첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x, y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지www.acmicpc.net알고리즘 : 구현난이도 : 골드 Ⅳ 1. 문제요약크기 N * M의 지도가 주어진다. 지도에는 N*M개의 숫자가 적혀있다.이 지도 위에서 주사위를 굴린다. 지도의 한 칸과 주사위의 한 면의 크기가 똑같아서, 주사위를 어느 방향으로 굴려도 항상 지도의 한칸과 정확히 맞닿는다고 생각하면 된다.처음에 주사위는 모든 면에 0이 적혀져 있는데, 1) 주사위와 맞닿은 지도에 써있는 숫자가 0이 아니라면 지도의 숫자가.. 2024. 4. 25.
[백준 11778] 피보나치 수와 최대공약수 11778번: 피보나치 수와 최대공약수첫째 줄에 n과 m이 주어진다. n과 m은 1,000,000,000,000,000,000보다 작거나 같은 자연수이다.www.acmicpc.net알고리즘 : 수학난이도 : 플래티넘Ⅴ 1. 문제요약1,000,000,000,000,000,000 이하의 두 자연수 n,m이 주어진다.n번째 피보나치 수와 m번째 피보나치 수의 최대공약수를 출력한다.다만 숫자가 너무 커지므로 1,000,000,007로 나눈 나머지를 출력한다.2. 아이디어$gcd(F_n,F_m)$을 구하는 문제인데, 이 문제를 풀려면 유클리드 호제법을 알고 있어야 한다.유클리드 호제법은 $gcd(x,y) = gcd(x-y,y)$을 의미하는데, 이를 일반화하면 $gcd(x,y) = gcd(y,z)$가 된다. (여기.. 2024. 4. 11.
[백준 11444] 피보나치 수 6 11444번: 피보나치 수 6 첫째 줄에 n이 주어진다. n은 1,000,000,000,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 알고리즘 : 수학 난이도 : 골드Ⅱ 1. 문제요약 1,000,000,000,000,000,000 이하의 자연수 n이 주어질때, n번째 피보나치수를 출력하는 프로그램을 작성한다. 다만 숫자가 너무 커지므로 1,000,000,007로 나눈 나머지를 출력하도록 한다. 2. 아이디어 지금까지 피보나치수는 점화식으로 구해왔으나, 이번에 주어진 n의 범위가 매우 크기때문에 점화식으로 구할시 반드시 시간초과가 뜰 수 밖에 없다. 일단 $10^{18}$이라는 숫자 자체가 힌트가 된다. 여기서 시간복잡도가 O(log n)이 되어야 함을 알 수 있다. 사실 .. 2024. 4. 11.
[백준 1019] 책 페이지 1019번: 책 페이지 첫째 줄에 0이 총 몇 번 나오는지, 1이 총 몇 번 나오는지, ..., 9가 총 몇 번 나오는지를 공백으로 구분해 출력한다. www.acmicpc.net 알고리즘 : 수학 난이도 : 플래티넘Ⅴ 1. 문제요약 시작 페이지가 1이고, 전체 페이지수 N인 책이 있다. N은 1,000,000,000이하의 자연수로, 입력으로 주어진다. 책의 전체 페이지에서 0부터 9까지의 숫자가 각각 몇개씩 등장하는지 구하는 문제이다. 예를들어 N = 99일때 구하는 출력은 다음과 같다. 9 20 20 20 20 20 20 20 20 20 2. 아이디어 위 예시에서 알 수 있듯이, 이 문제에서 숫자 0은 페이지의 첫째 자리에 올 수 없기 때문에 특별한 지위에 있다. 이렇게 특별한 취급이 필요한 숫자는 계.. 2024. 4. 9.
[백준 1107] 리모컨 1107번: 리모컨 첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼이 www.acmicpc.net 알고리즘 : 브루트포스 난이도 : 골드Ⅴ 1. 문제요약 숫자 0~ 9번과 채널을 옮기는 +와 - 버튼이 있는 리모컨이 있는데, 리모컨의 숫자 버튼 일부가 고장난 상태이다. 입력으로 이동하려고 하는 채널번호 N(0이상 500,000이하의 정수)과 고장난 숫자의 개수 M(0이상 10이하의 정수), 그리고 고장난 숫자 번호 M개가 주어진다. 예를들어 5457번으로 이동하려고 하고, 숫자버튼 3개가 고장났는데 고장난 번호가 6,7,8이라면 입력은 다음.. 2024. 4. 9.