๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 2502_๋–ก ๋จน๋Š” ํ˜ธ๋ž‘์ด

๋ฟŒ์•ผ._. 2022. 3. 10. 23:21

Silver I

๋ฌธ์ œ(์ถœ์ฒ˜: 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์˜ ๊ฐœ์ˆ˜๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋Š”์ง€ ํ™•์ธํ•˜์—ฌ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋ฉด ์ค‘๋‹จํ•˜๋„๋ก ๊ตฌํ˜„ํ•˜์˜€๋‹ค.


์ƒ๊ฐ๐Ÿค”

 

๊ทœ์น™์„ ์ฐพ์œผ๋ฉด ์‰ฝ๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์˜€๋‹ค.

๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฟŒ์‹œ๊ธฐ -!