본문 바로가기

반응형

프로그래밍/알고리즘 문제 풀이

(3)
2942 - 퍼거슨과 사과 1. 문제 조건 확인 https://www.acmicpc.net/problem/2942 빨간 사과 R개와 초록 사과가 G개 있다. 이를 몇몇 선수들에게 나누어 주는데, 받은 선수들은 모두 같은 수의 사과를 가져야 한다. 또한 사과를 나누어 준 뒤에 사과가 남아서는 안된다. 선수는 무한히 존재한다. 입력 조건 빨간 사과의 수 R과 초록 사과의 수 G가 주어진다. R, G 모두 10^9이하의 자연수이다. 즉, INT 범위 이내이다. 출력 조건 사과를 나누는 방법을 모두 출력한다. 그 형식은 (N X Y)로 모든 경우를 한 줄 씩 출력한다. N은 선수의 수, X와 Y는 각 선수가 받는 빨간 사과와 초록 사과의 수이다. ex) 빨간 사과 4개, 초록 사과 8개인 경우 예시 출력:1 4 8 2 2 4 4 1 2 ..
1309 - 동물원 1. 문제 조건 확인 https://www.acmicpc.net/problem/1309 동물원에 사는 사자들을 그림과 같은 우리에 가둔다고 한다. 사자를 가두기 위한 우리에는 배치 문제가 있는데, 사자를 우리에 가로로도 세로로도 붙어 있게 배치가 불가능하다. 여기서 2XN 크기의 우리에서 사자를 배치하는 경우의 수를 구하는 것이 문제이다. 입력 조건 2XN 크기의 우리에서 N값을 입력받는다. N은 10^5이하의 정수이다. 출력 조건 2XN 크기의 우리에서 사자를 배치할 수 있는 경우의 수를 출력한다. 그 답은 9901로 나눈 나머지를 출력하여야 한다. 2. 문제 풀이 아이디어 문제에서 사자는 가로로 혹은 세로로 붙어 배치하지 못한다고 한다. 즉, 대각선의 배치는 가능하다. 또한 사자를 한마리도 배치하지 ..
1003 - 피보나치 함수 1. 문제 조건 확인 https://www.acmicpc.net/problem/1003 피보나치 수에 대한 문제이다. 단, 피보나치 수를 구하는 문제는 아니다. 피보나치 수는 유명한 수열로, 앞의 두항을 더해 다음항을 구하는 구조이다. 조금 써보자면, 0 1 1 2 3 5 8 13 21 34 55... 로 진행된다. F(n) = F(n-1) + F(n-2) (단 n=0 일때 0, 1일 때 1) 이를 프로그래밍 한다면, 간단히 재귀함수를 이용해 나타낼 수 있다. 그 예가 바로 문제에서 볼수 있다. 이를 이용하면 피보나치 수를 구할 수 있다. 다만, 문제에서 요구하는 것은 위의 재귀 함수를 이용했을 때, fibonacci(0)와 fibonacci(1)의 호출수를 구하는 것이다. 그 예가 문제에 잘 나타나있는..