๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/2502)
<๋ก ๋จน๋ ํธ๋์ด>
๋ฌธ์
ํ๋ฃจ์ ํ ๋ฒ ์ฐ์ ๋์ด๊ฐ๋ ๋ก ์ฅ์ฌ ํ ๋จธ๋๋ ํธ๋์ด์๊ฒ ๋ก์ ์ฃผ์ด์ผ ์ฐ์ ๋์ด๊ฐ ์ ์๋๋ฐ, ์์ฌ ๋ง์ ํธ๋์ด๋ ์ด์ ๋ฐ์ ๋ก์ ๊ฐ์์ ๊ทธ์ ๊ป ๋ฐ์ ๋ก์ ๊ฐ์๋ฅผ ๋ํ ๋งํผ์ ๋ก์ ๋ฐ์์ผ๋ง ํ ๋จธ๋๋ฅผ ๋ฌด์ฌํ ๋ณด๋ด ์ค๋ค๊ณ ํ๋ค.
์๋ฅผ ๋ค์ด ์ฒซ์งธ ๋ ์ ๋ก์ 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)๊ฐ ์กด์ฌํ๋ค.
๋ฌธ์ ํ์ด
- my solution
import sys
if __name__=='__main__':
D,K=map(int, sys.stdin.readline().split()) # ๋์ด์จ ๋ , ๋ก์ ๊ฐ์
arr=[[1,0],[0,1]]
for i in range(2,D):
arr.append([arr[i-1][0]+arr[i-2][0], arr[i-1][1]+arr[i-2][1]])
a_temp=arr[-1][0]
b_temp=arr[-1][1]
a=1
b=-1
while True: # ์ฒซ ๋ , ๋์งธ ๋ ๋ก์ ๊ฐ์ ๊ตฌํ๊ธฐ
temp=K-(a_temp*a)
if temp%b_temp==0:
b=temp//b_temp
break
else:
a+=1
print(a) # ์ฒซ ๋
print(b) # ๋์งธ ๋
์ฒซ๋ ํธ๋์ด์๊ฒ ์ค ๋ก์ ์๋ฅผ a๋ผ ํ์. ๋์งธ ๋ ์ ํธ๋์ด์๊ฒ ์ค ๋ก์ ์๋ฅผ b๋ผ ํ์.
๊ทธ๋ผ ์ ์งธ ๋ ์ a+b, ๋ท์งธ ๋ ์ b+(a+b)=a+2b, ๋ค์ฏ์งธ ๋ ์๋ (a+b)+(a+2b)=2a+3b, ์ฌ์ฏ์งธ ๋ ์๋ (a+2b)+(2a+3b)=3a+5b๊ฐ ๋๋ค.
๋ง์ฝ ์ฃผ์ด์ง ์์ ์ ๊ฐ์ด ์ ๋ ฅ์ด ํ ๋จธ๋๊ฐ ๋์ด์จ ๋ =6, ๊ทธ๋ ํธ๋์ด์๊ฒ ์ค ๋ก์ ๊ฐ์=41์ด๋ผ๊ณ ํ๋ค๋ฉด
3a+5b=41์ด ๋๋ a์ b์ ๊ฐ์ ์ฐพ์ผ๋ฉด ๋๋ ๊ฒ์ด๋ค.
์์ ๊ฐ์ด ๊ตฌํ์ ๋ ๋์ด์จ ๋ ์ด ๋์ด๋๋ a์ b์ ์กฐํฉ์ผ๋ก๋ง ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค๋ ๊ฒ์ ์ ์ ์๋ค.
๊ทธ๋์ ๋ฆฌ์คํธ๋ฅผ ์ ์ธํ์ฌ [a์ ๊ฐ์, b์ ๊ฐ์]๋ฅผ ์ ์ฅํ์๋ค.
๋ต์ด ์ฌ๋ฌ ๊ฐ๊ฐ ์กด์ฌํ ์ ์์ง๋ง ๊ทธ์ค ํ๋๋ฉด ๊ตฌํด์ ์ถ๋ ฅํ๋ฉด ๋๋ ๊ฒ์ด๋ฏ๋ก ๋ฐ๋ณต๋ฌธ์ ๋๋ ค a์ b์ ๊ฐ์ด ๊ตฌํด์ง๋ฉด ์ค๋จํ๊ณ ๋ต์ ์ถ๋ ฅํด์ค๋ค.
๋ต์ ๊ตฌํ ๋, a์ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ๊ตฌํ์๋ค. a๊ฐ 1์ผ ๋๋ถํฐ ์์ํ์ฌ ๊ทธ๋ ์ค ๋ก์ ๊ฐ์ - [a์ ๊ฐ์ * a(์ฒซ๋ ๋ก ๊ฐ์)]๋ฅผ ๊ตฌํ ํ ์์์ ๊ตฌํ ๊ฐ์ด b์ ๊ฐ์๋ก ๋๋์ด ๋จ์ด์ง๋์ง ํ์ธํ์ฌ ๋๋์ด ๋จ์ด์ง๋ฉด ์ค๋จํ๋๋ก ๊ตฌํํ์๋ค.
์๊ฐ๐ค
๊ท์น์ ์ฐพ์ผ๋ฉด ์ฝ๊ฒ ํด๊ฒฐํ ์ ์๋ ๋ฌธ์ ์๋ค.
๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ ๋ฟ์๊ธฐ -!
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 2644_์ด์๊ณ์ฐ (0) | 2022.03.14 |
---|---|
[Baekjoon] 11725_ํธ๋ฆฌ์ ๋ถ๋ชจ ์ฐพ๊ธฐ (0) | 2022.03.11 |
[Baekjoon] 11048_์ด๋ํ๊ธฐ (0) | 2022.03.09 |
[Baekjoon] 1389_์ผ๋น ๋ฒ ์ด์ปจ์ 6๋จ๊ณ ๋ฒ์น (0) | 2022.03.08 |
[Baekjoon] 1991_ํธ๋ฆฌ ์ํ (0) | 2022.03.07 |