๐งฉ๋ฌธ์ ํด์
๋ก ํ๋ ์ฃผ๋ฉด ์์ก์ ๋จน์ง!~ ์์ ์์ด๋์ด๋ฅผ ์ป์ ๋ฌธ์ ๊ฐ๋ค ใ ใ ใ
๋ฌธ์ ๊ฐ ์ฌ๋ฐ์๋ค.
ํธ๋์ด๊ฐ ์ค๋ ๋จน์ ๋ก์ ๊ฐฏ์๋ 1์ผ์ ํ๊ณ 2์ผ์ ์ ์ป์ ๋ก์ ๋ํ ๊ฐฏ์์ด๋ค.
์ด ๊ธ์ ๋ณด๋ฉด ๋ฐ๋ก ํผ๋ณด๋์น ์์ด์ด๋ผ๋ ๊ฒ์ ๋์น์ฑ์ ๊ฒ์ด๋ค.
n๋ฒ์งธ ๋ ๋จน์ ๋ก์ ๊ฐฏ์ k๊ฐ ์ฃผ์ด์ก์ ๋ ์ฒซ์งธ๋ ํ๊ณ ๋์งธ๋ ์ ๋จน์ ๋ก์ ๊ฐฏ์๋ฅผ ์ถ๋ ฅํ๋ ๋ฌธ์ ์ด๋ค.
๐ ํ์ด
ํผ๋ณด๋์น๋ผ๋ ๊ฒ์ ํ์ ํ์ ๋ฌธ์ ํ๊ธฐ๋ ์ฌ์์ก๋ค.
์ฒซ์งธ๋ ์ ๋จน์ ๋ก์ ๊ฐฏ์๊ฐ a, ๋์งธ๋ ์ ๋จน์ ๋ก์ ๊ฐฏ์๋ฅผ b๋ผ๊ณ ํ ๋ ์๋์ ํ๋ฅผ ์ดํด๋ณด์.
๋ ์ง | 1 | 2 | 3 | 4 | 5 | 6 |
๋ก์ ๊ฐฏ์ | a | b | a+b | a+2b | 2a+3b | 3a+5b |
์ฒซ์งธ๋ ์๋ a๊ฐ, ๋์งธ๋ ์๋ b๊ฐ, ์ ์งธ๋ ์๋ ์ฒซ์งธ๋ ๊ณผ ๋์งธ๋ ์ ๋ํ a+b๊ฐ๋ฅผ ๋จน์๋ค. ๊ทธ๋ฆฌ๊ณ ๋ค์งธ๋ ์๋ ๋์งธ๋ ๊ณผ ์ ์งธ๋ ์ ๋ํ a + 2b๊ฐ๋ฅผ ๋จน์๋ค.
์ ํ๋ฅผ ์ด์ง ๋ณด๊ธฐ ์ข๊ฒ ์์ ํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
๋ ์ง | 1 | 2 | 3 | 4 | 5 | 6 |
๋ก์ ๊ฐฏ์ | 1a + 0b | 0a + 1b | 1a+1b | 1a+2b | 2a+3b | 3a+5b |
์ฆ ์ฒซ์งธ๋ ์๋ (1,0) ๋์งธ๋ ์๋ (0,1) ๊ฐ์ผ๋ก ํผ๋ณด๋์น ์์ด์ ์ด๋ฃฐ ๊ฒ์ด๋ค. ๊ทธ๋ ๋ค๋ฉด n๋ฒ์งธ ๋ ์ a์ b์ ๊ณ์๋ฅผ ํ์ ํ ์ ์๊ณ , a์ b์ ๊ฐ์ ๋ธ๋ฃจํธํฌ์ค ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ์ฐพ์ ๋ผ ์ ์๋ค!
๐ป ์ฝ๋
D, K = map(int, input().split())
# ํผ๋ณด๋์น ์์ด์ ๋น ๋ฅด๊ฒ ์คํ์ํค๊ธฐ ์ํ dpํ
์ด๋ธ
d = [0] * 31
d[1] = (1,0) # ์ฒซ์งธ๋ ๋ก์ ๊ฐฏ์ 1a + b
d[2] = (0,1) # ๋์งธ๋ ๋ก์ ๊ฐฏ์ 1b + 0a
for i in range(3, D+1): # D๋ฒ์งธ๋ ๋ก์ ๊ฐฏ์
d[i] = (d[i-1][0] + d[i-2][0], d[i-1][1] + d[i-2][1])
# D๋ฒ์งธ ๋ ์ a์ b์ ๊ณ์
a = d[D][0]
b = d[D][1]
n,m = 1,1 # a์ b์ ๊ฐ
# ๋ธ๋ฃจํธํฌ์ค ์๊ณ ๋ฆฌ์ฆ
while True:
if a*n + b*m == K: # a์ b์ ๊ฐ์ ์ฐพ์๋ค๋ฉด ์ถ๋ ฅ
print(n,m,sep='\n')
break
elif a*n + b*m < K: # a์ b๊ฐ์ด k ๋ณด๋ค ์๋ค๋ฉด b์ ๊ฐ์ ํ๋ํค์
m += 1
else: # ๊ฐ์ด ํฌ๋ค๋ฉด a ๊ฐ ํ๋ ํค์ฐ๊ณ b๋ ๋ค์ 1๋ถํฐ
n += 1
m = 1
๐ฏ ํธ๋ญ์ด ๐ฏ
๐ ๋ฌธ์ ๋งํฌ : ๋ก ๋จน๋ ํธ๋์ด
'Problem Solving > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 7562๋ฒ: ๋์ดํธ์ ์ด๋ - ํ์ด์ฌ (0) | 2022.05.31 |
---|---|
[๋ฐฑ์ค] 2573๋ฒ: ๋น์ฐ - ํ์ด์ฌ (0) | 2022.05.30 |
[๋ฐฑ์ค] 1654๋ฒ: ๋์ ์๋ฅด๊ธฐ - ํ์ด์ฌ (0) | 2022.05.23 |
[๋ฐฑ์ค] 25192๋ฒ: ์ธ์ฌ์ฑ ๋ฐ์ ๊ณฐ๊ณฐ์ด - ํ์ด์ฌ (0) | 2022.05.22 |
[๋ฐฑ์ค] 2606๋ฒ: ๋ฐ์ด๋ฌ์ค - ํ์ด์ฌ (0) | 2022.05.19 |