일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 팔레드오페라웨딩홀
- 대전결혼준비
- 코린이블로그17일차 #알고리즘공부 #C언어
- 팔레드오페라 웨딩홀 계약 후기
- 화담필름
- 대전스냅추천
- 코드스테이츠
- 대전 피로연장 넉넉한 웨딩홀
- 여백스냅
- 대전스냅
- 대전예식
- AIBootcamp
- AI부트캠프
- codestates
- 1주차
- 코린이블로그8일차 #알고리즘공부 #C언어
- 파이썬
- 대전본식스냅
- CLI
- 코린이블로그2일차 #알고리즘공부 #C언어
- 웅장한 웨딩홀
- 코린이블로그4일차 #알고리즘공부 #C언어
- 코린이블로그9일차 #알고리즘공부 #C언어
- 2주차
- 대전 웨딩홀 추천
- 대전본식dvd
- 대전본식스냅추천
- 대전 웨딩홀 비교
- 대전 팔레드오페라 후기
- 대전 웨딩홀 가격
- Today
- Total
찰리의 놀이터
(C언어) 떡 먹는 호랑이 - 백준2502번 본문
떡 먹는 호랑이
시간제한: 1 Sec 메모리제한: 32 MB Special Judge
제출: 817 해결: 417
하루에 한 번 산을 넘어가는 떡 장사 할머니는 호랑이에게 떡을 주어야 산을 넘어갈 수 있는데, 욕심 많은 호랑이는 어제 받은 떡의 개수와 그저께 받은 떡의 개수를 더한 만큼의 떡을 받아야만 할머니를 무사히 보내 준다고 한다.
예를 들어 첫째 날에 떡을 1개 주었고, 둘째 날에는 떡을 2개 주었다면 셋째 날에는 1+2=3개, 넷째 날에는 2+3=5개, 다섯째 날에는 3+5=8개, 여섯째 날에는 5+8=13개를 주어야만 무사히 산을 넘어갈 수 있다.
우리는 산을 무사히 넘어온 할머니에게 오늘 호랑이에게 몇 개의 떡을 주었는지, 그리고 오늘이 호랑이를 만나 떡을 준지 며칠이 되었는지를 알아내었다. 할머니가 호랑이를 만나서 무사히 넘어온 D째 날에 준 떡의 개수가 K개임을 알 때, 여러분은 할머니가 호랑이를 처음 만난 날에 준 떡의 개수 A, 그리고 그 다음 날에 호랑이에게 준 떡의 개수 B를 계산하는 프로그램을 작성하시오. 이 문제에서는 항상 1≤A≤B 이다.
예를 들어 여섯 번째 날에 산을 무사히 넘어온 할머니가 호랑이에게 준 떡이 모두 41개라면, 호랑이를 만난 첫 날에 준 떡의 수는 2개, 둘째 날에 준 떡의 수는 7개이다. 즉 셋째 날에는 9개, 넷째 날에는 16개, 다섯째 날에는 25개, 여섯째 날에는 41개이다. 따라서 A=2, B=7 이 된다. 단 어떤 경우에는 답이 되는 A, B가 하나 이상일 때도 있는데 이 경우에는 그 중 하나만 구해서 출력하면 된다.
첫째 줄에는 할머니가 넘어온 날 D (3≤D≤30)와 그 날 호랑이에게 준 떡의 개수 K (10≤K≤100,000)가 하나의 빈칸을 사이에 두고 주어진다.
첫줄에 첫 날에 준 떡의 개수 A를 출력하고 그 다음 둘째 줄에는 둘째 날에 준 떡의 개수 B를 출력한다. 이 문제에서 주어진 D, K에 대해서는 항상 정수 A, B (1≤A≤B)가 존재한다.
6 41
2
7
7 218
10
21
---------------------------------------------------문제풀이----------------------------------------------------------------------
피보나치 수열을 역으로 구한다는 생각으로 풀어보겠습니다.
1 1 2 3 5 8 13 21 ...순으로 진행되는데 첫 번째 수가 a 두 번째 수가 b라고 가정했을 때,
위 그림과 같이 진행되는 것을 볼 수 있습니다.
여기서 a와 b를 어떻게 바꿔주느냐에 따라 d번째 날에 k의 수가 나올 수 있도록 만들 수 있습니다.
또한 여기서 a의 계수는 3일차부터, b의 계수는 2일차부터 피보나치 수열을 따르는 것을 알수 있습니다.
이에따라 k = arr[d-2] * a + arr[d-1] * b의 식이 세워지는 것을 확인할 수 있습니다.