์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ/BOJ_Python

[BOJ/Step15] 1904 : 01ํƒ€์ผ (Python)

NaNaRin๐Ÿ™ƒ 2021. 2. 24. 20:56

www.acmicpc.net/problem/1904

 

1904๋ฒˆ: 01ํƒ€์ผ

์ง€์›์ด์—๊ฒŒ 2์ง„ ์ˆ˜์—ด์„ ๊ฐ€๋ฅด์ณ ์ฃผ๊ธฐ ์œ„ํ•ด, ์ง€์›์ด ์•„๋ฒ„์ง€๋Š” ๊ทธ์—๊ฒŒ ํƒ€์ผ๋“ค์„ ์„ ๋ฌผํ•ด์ฃผ์…จ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ๊ฐ๊ฐ์˜ ํƒ€์ผ๋“ค์€ 0 ๋˜๋Š” 1์ด ์“ฐ์—ฌ ์žˆ๋Š” ๋‚ฑ์žฅ์˜ ํƒ€์ผ๋“ค์ด๋‹ค. ์–ด๋Š ๋‚  ์ง“๊ถ‚์€ ๋™์ฃผ๊ฐ€ ์ง€์›์ด

www.acmicpc.net


์ญ‰ ๊ฐ€๋Šฅํ•œ ํƒ€์ผ์„ ๋‚˜์—ดํ•ด๋ณด๋ฉด ๊ทœ์น™์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค

n=1 (1)  : 1

n=2 (2) : 00 11

n=3 (3) : 001 100 111

n=4 (5) : 0000 0011 1001 1100 1111

n=5 (8) : 00001 00100 00111 10000 10011 11001 11100 11111

 

f(n) = f(n-1) + f(n-2) ๋ผ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค

 

(1) ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

  1. ๋ฐฐ์—ด array์— ๋ฏธ๋ฆฌ 0, 1, 2, 0, 0, 0, … ์„ ๋„ฃ์–ด๋‘”๋‹ค

  2. for๋ฌธ์„ ํ†ตํ•ด array[3]๋ถ€ํ„ฐ ์ฑ„์›Œ๋‚˜๊ฐ„๋‹ค array[n] = ( array[n-1] + array[n-2] ) % 15746

  3. n๋ฒˆ์งธ๊นŒ์ง€ ์ฑ„์šด ํ›„ array[n]์„ ์ถœ๋ ฅ

# 1904-1.py

n = int(input())
array = [0, 1, 2] + [0] * n

for i in range(3, n+1):
    array[i] = (array[i-1] + array[i-2]) % 15746

print(array[n])

 

(2) ๋ณ€์ˆ˜๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

  1. ๋ณ€์ˆ˜ a, b ์— ๊ฐ๊ฐ 1, 2๋ฅผ ์ €์žฅํ•œ๋‹ค

  2. a์—๋Š” b๋ฅผ, b์—๋Š” a + b % 15746์„ ์ €์žฅํ•œ๋‹ค

  3. n-1๋ฒˆ ๋ฐ˜๋ณตํ•œ ํ›„ a๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค ( ๋ฏธ๋ฆฌ 1, 2 ๋ฅผ ์ €์žฅํ•ด ๋‘์—ˆ๊ธฐ ๋•Œ๋ฌธ์— n๋ฒˆ์ด ์•„๋‹Œ n-1๋ฒˆ ๋ฐ˜๋ณต )

# 1904-2.py

n = int(input())
a, b = 1, 2

for _ in range(n-1):
    a, b = b, (a + b) % 15746

print(a)

 

 

์œ„๋ถ€ํ„ฐ (1) (2) ๋ฒˆ ์ฝ”๋“œ

(2)๋ฒˆ ์ฝ”๋“œ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ ๊ฒŒ ๋“œ๋Š”๊ฑด ๋‹น์—ฐํ•œ๋ฐ

์†๋„๋Š” ์™œ ๋น ๋ฅธ๊ฑธ๊นŒ..? ์˜๋ฌธ