๐Ÿถ Programming/์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€๊ธฐ

BOJ. 9095 1, 2, 3 ๋”ํ•˜๊ธฐ (Python)

์ง€ ์› 2022. 12. 5. 04:25

[ ๋ฌธ์ œ ]

https://www.acmicpc.net/problem/9095

 

9095๋ฒˆ: 1, 2, 3 ๋”ํ•˜๊ธฐ

๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋งˆ๋‹ค, n์„ 1, 2, 3์˜ ํ•ฉ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐฉ๋ฒ•์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

www.acmicpc.net

 

[ ๋‚˜์˜ ํ’€์ด ] 

๐Ÿ”ธ ์ ‘๊ทผ ๋ฐฉ๋ฒ•

์ฃผ์–ด์ง„ ์ˆซ์ž๋ฅผ 1, 2, 3 ์œผ๋กœ ๋นผ์„œ 0์ด ๋  ๋•Œ๊นŒ์ง€ ๋บ€๋‹ค. 0์ด ๋˜๋Š” ๊ฒฝ์šฐ์—๋Š” return ํ•œ๋‹ค.

1, 2, 3์œผ๋กœ ๋บ„๋•Œ ๊ฐ’์„ ๋ฌธ์ž์—ด๋กœ ์ €์žฅํ•œ๋‹ค. ๋ฌธ์ž์—ด ๊ฐ’์€ answer๋ผ๋Š” list์— ์ €์žฅํ•œ๋‹ค.

ํ•ด๋‹น list์— ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฌธ์ž์—ด ๊ฐ’์„ ์ถ”๊ฐ€ํ•œ๋‹ค.

list์˜ ๊ธธ์ด๊ฐ€ ๊ณง ํ•ฉ์„ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์˜ ์ˆ˜๊ฐ€ ๋œ๋‹ค.

 

๐Ÿ”ธ ํ’€์ด ์ฝ”๋“œ

# n์ด 1, 2, 3์˜ ํ•ฉ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ๋ฅผ ์ฐพ๋Š” ํ•จ์ˆ˜
def find(n, string):
	# n์˜ ๊ฐ’์ด 0์ธ ๊ฒฝ์šฐ
    if n == 0:
    	# ๊ทธ๋™์•ˆ ๊ฐ’์„ ๋บ€ string์ด ์ €์žฅํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋งŒ answer list์— ๊ฐ’ ์ €์žฅ
        if not string in answer:
            answer.append(string)
        return 
    
    # n์˜ ๊ฐ’์ด 0์ด ์•„๋‹Œ ๊ฒฝ์šฐ. 1, 2, 3 ์ˆœ์„œ๋Œ€๋กœ ๋นผ๊ณ , ๋บ€ ์ˆซ์ž๋ฅผ ๋ฌธ์ž์—ด๋กœ ๊ธฐ๋ก
    for num in [1, 2, 3]:
        if n >= num:
            find(n-num, string + str(num))
        else:
            continue

# ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ๊ฐœ์ˆ˜ T
T = int(input())

# ํ…Œ์ŠคํŠธ ์ง„ํ–‰ํ•˜๋Š” ๋ฐ˜๋ณต๋ฌธ
for _ in range(T):
	# ๋บ€ ์ˆซ์ž๋ฅผ ์ €์žฅํ•  list
    answer = list()
    
    # ์ธํ’‹ ์ •์ˆ˜๊ฐ’ N
    N = int(input())

	# find ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด N๊ฐ’์ด 1, 2, 3์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๊ฒฝ์šฐ๋ฅผ answer์— ์ €์žฅ
    find(N, '')

	# answer์˜ ๊ธธ์ด ์ถœ๋ ฅ
    print(len(answer))

[ pair์˜ ํ’€์ด ]

๐Ÿ”ธ ์ ‘๊ทผ ๋ฐฉ๋ฒ•

pair๋Š” ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด์˜ ๊ทœ์น™์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์ฐพ์•„๋ƒˆ๋‹ค..... ์–ด์ผ€ ํ–ˆ์ง€... ๐Ÿ˜ฏ

๊ทธ ์ „ 3๊ฐœ์˜ ํ•ฉ์ด ๊ทธ ๋‹ค์Œ ์ •์ˆ˜์˜ ๊ฐ’์ด ๋œ๋‹ค.

์ „์ฒด ์ •์ˆ˜๊ฐ€ 11๊นŒ์ง€์—ฌ์„œ 11๊นŒ์ง€์˜ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด ๊ฐ’์„ ๋‹ค ์ €์žฅํ•ด๋‘๊ณ  ๊ฐ’์„ ์ถœ๋ ฅํ–ˆ๋‹ค.

์งฑ๐Ÿ‘

 

๐Ÿ”ธ ํ’€์ด ์ฝ”๋“œ

t = int(input())

arr = [0 for _ in range(11)]
arr[1] = 1  # 1
arr[2] = 2  # 1+1, 2
arr[3] = 4  # 1+1+1, 1+2, 2+1, 3

for i in range(4, 11):
    arr[i] = sum(arr[i-3:i])

for _ in range(t):
    n = int(input())
    print(arr[n])

 

 

pair ์˜ github : https://github.com/Ui-Seok