๋‚ด ์ธ์ƒ์—์„œ ๋ฏฟ์„ ๊ฑด ์˜ค์ง ๋‚˜ ์ž์‹ ๋ฟ!

The only one you can truly trust is yourself.

๊ฒŒ์ž„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ/Python ํ”„๋กœ๊ทธ๋ž˜๋ฐ

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค 2 x n ํƒ€์ผ๋ง

๐ŸŽฎinspirer9 2023. 2. 16. 14:03
728x90
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ์„ค๋ช…

๊ฐ€๋กœ ๊ธธ์ด๊ฐ€ 2์ด๊ณ  ์„ธ๋กœ์˜ ๊ธธ์ด๊ฐ€ 1์ธ ์ง์‚ฌ๊ฐํ˜•๋ชจ์–‘์˜ ํƒ€์ผ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ง์‚ฌ๊ฐํ˜• ํƒ€์ผ์„ ์ด์šฉํ•˜์—ฌ ์„ธ๋กœ์˜ ๊ธธ์ด๊ฐ€ 2์ด๊ณ  ๊ฐ€๋กœ์˜ ๊ธธ์ด๊ฐ€ n์ธ ๋ฐ”๋‹ฅ์„ ๊ฐ€๋“ ์ฑ„์šฐ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ํƒ€์ผ์„ ์ฑ„์šธ ๋•Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด 2๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํƒ€์ผ์„ ๊ฐ€๋กœ๋กœ ๋ฐฐ์น˜ ํ•˜๋Š” ๊ฒฝ์šฐ
  • ํƒ€์ผ์„ ์„ธ๋กœ๋กœ ๋ฐฐ์น˜ ํ•˜๋Š” ๊ฒฝ์šฐ

์˜ˆ๋ฅผ๋“ค์–ด์„œ n์ด 7์ธ ์ง์‚ฌ๊ฐํ˜•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฑ„์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ง์‚ฌ๊ฐํ˜•์˜ ๊ฐ€๋กœ์˜ ๊ธธ์ด n์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์ด ์ง์‚ฌ๊ฐํ˜•์„ ์ฑ„์šฐ๋Š” ๋ฐฉ๋ฒ•์˜ ์ˆ˜๋ฅผ return ํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

์ œํ•œ์‚ฌํ•ญ

  • ๊ฐ€๋กœ์˜ ๊ธธ์ด n์€ 60,000์ดํ•˜์˜ ์ž์—ฐ์ˆ˜ ์ž…๋‹ˆ๋‹ค.
  • ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ๋งŽ์•„ ์งˆ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ 1,000,000,007์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ returnํ•ด์ฃผ์„ธ์š”.

์ž…์ถœ๋ ฅ ์˜ˆ

n result
4 5

์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์ž…์ถœ๋ ฅ ์˜ˆ #1
๋‹ค์Œ๊ณผ ๊ฐ™์ด 5๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

๋‚˜์˜ ๋ฌด์ง€์„ฑ ํ’€์ด

  • ๋‚ด๊ฐ€ ์ฝ”๋”ฉํ•˜๋Š” ์ˆœ์„œ๋Œ€๋กœ ์ ์–ด๋ณด๊ธฐ
  • ์ฒ˜์Œ์—” ๋„ํ˜• ๊ทธ๋ฆฌ๊ธฐ ๋ฌธ์ œ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค๊ฐ€ ๊ทธ๋ ค๋ณด๋‹ˆ๊นŒ
  • "ํ•ฉ์ด n์ธ 1๊ณผ 2์˜ ์ˆœ์„œ ์กฐํ•ฉ"์„ ์ฐพ๋Š” ๋ฌธ์  ๊ฐ€?
    • n = 4
      • n = 1+1+1+1
      • n = 1+1+2
      • n = 1+2+1
      • n = 2+1+1
      • n = 2+2

  • ๋ฌด์ง€์„ฑ ์ฝ”๋”ฉ ๊ฐ€์ฆˆ์•„!
  • ํ˜น์‹œ n์ด 4๋ณด๋‹ค ์ž‘์œผ๋ฉด ๊ทธ๋ƒฅ ๋ฆฌํ„ดํ•ด๋ฒ„๋ ค.
  • ๊ฒฐ๊ณผ๋Š” ... ๊บผ์ ธ... ใ…‹ใ…‹ใ…‹

  • ์–ด๋–ป๊ฒŒ ์งค์ง€ ๊ณ ๋ฏผํ•˜๋ฉด์„œ ์ด๋Ÿฐ ์ €๋Ÿฐ ์ƒ๊ฐํ•ด๋ณด๊ณ ...
  • ๊ทธ๋ƒฅ ๋‚ด ๋จธ๋ฆฌ์†์—์„œ ๋‚ด๊ฐ€ ํ‘ธ๋Š” ๋ฐฉ์‹์„ ์ฝ”๋”ฉํ•œ๋‹ค๊ณ  ์ƒ๊ฐ
  • ์•„๋‹ˆ ๊ทผ๋ฐ 1, 2๋ฅผ ์„ž์–ด์„œ ์ˆœ์—ด์„ ๋งŒ๋“ค๋ฉด ํ•ฉ์ด ๋„˜์–ด๊ฐ€๋Š”์ง€ ์ฒดํฌํ•ด์•ผํ•˜๊ณ ...

  • ์•„๋ฌด ์ƒ๊ฐ์—†์ด ๊ณ„์† 1๊ณผ 2 ์กฐํ•ฉ์œผ๋กœ ๊ณ„์† ๋งŒ๋“ค์–ด๋ณด๋‹ˆ๊นŒ...
  • ์–ด์šฐ ์–ด์งˆ ์–ด์งˆํ•˜๋‹ค.
n -> result ์กฐํ•ฉ
1 -> 1 (1) = 1
2 -> 2 (1,1) = 1
(2) = 1
3 -> 3 (1,1,1) = 1
(1,2) = 2
4 -> 5 (1,1,1,1) = 1
(1,1,2) = 3
(2,2) = 1
5 -> 8 (1,1,1,1,1) = 1
(1,1,1,2) = 4
(1,2,2) = 3
6 -> 13 (1,1,1,1,1,1) = 1
(1,1,1,1,2) = 5
(1,1,2,2) = 6 (3+2+1)
(2,2,2) = 1
7 -> 21 (1,1,1,1,1,1,1) = 1
(1,1,1,1,1,2) = 6
(1,1,1,2,2) = 10 (4+3+2+1)
(1,2,2,2) = 4
8 -> 34 (1,1,1,1,1,1,1,1) = 1
(1,1,1,1,1,1,2) = 7
(1,1,1,1,2,2) = 15 (5+4+3+2+1)
(1,1,2,2,2) = 10 (4+3+2+1)
(2,2,2,2) = 1
  • ์ด๊ฑฐ ๋ญ”๊ฐ€ ๊ทœ์น™์ด ์žˆ๋Š”๋ฐ...
    • ์กฐํ•ฉ์˜ ๊ฐฏ์ˆ˜๊ฐ€ f(n) = f(n-1) + f(n-2) ๊ฐ™์€ ๊ทœ์น™์ด ์žˆ๋„ค?
    • ๊ทผ๋ฐ ์กฐํ•ฉ์ด ์ ์  ๋งŽ์•„์ง€๋Š”๋ฐ... ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ result ์ž์ฒด๊ฐ€ ์ˆ˜์—ด์ด์—ˆ๋„ค?
    • 1 ์‚์ ธ๋‚˜์˜ค๋Š” ๊ฒƒ ๋•Œ๋ฌธ์— 1 ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋ƒ ์‹ถ์—ˆ๋Š”๋ฐ, ์ € 1์ด ์‚์ ธ๋‚˜์˜ค๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ f(n-2)์—์„œ 1 ๋”ํ•˜๋Š” ๊ฑฐ๋ผ์„œ ๊ทธ๋ƒฅ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด์ด ๋˜์–ด๋ฒ„๋ ธ๋‹ค.

  • ์•ˆ๋˜์ž–์•„?

  • ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋งŒ ํ†ต๊ณผํ•œ ์†Œ์Šค๋ฅผ ๋ฐ”๋กœ ์‹คํ–‰ํ–ˆ์œผ๋‹ˆ...
  • ์ž˜๋ณด๋‹ˆ๊นŒ a,b ๋ฐ˜๋Œ€๋กœ ์จ๋†“๊ณ , n์— 3์„ ๋นผ๋ฒ„๋ ธ๋„ค?
  • ๊ฒฐ๊ณผ๊ฐ’๋„ 100...007๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ๋ฆฌํ„ดํ•ด์•ผ๋˜๋Š”๋ฐ ๋น ํŠธ๋ฆผ.
def solution(n):
    a, b = 2, 3
    n -= 2
    for i in range(n):
        c = a + b
        a, b = b, c
    return a % 1000000007
  • ์ˆ˜์ •ํ•˜๊ณ  ๋‚˜๋‹ˆ ์ž˜ ๋œ๋‹ค.
  • ์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ๋นจ๋ฆฌ ๊ฐ„๋‹ค. ๋ฒŒ์จ 1์‹œ๊ฐ„ ๋„˜๊ฒŒ ๊ฑธ๋ ธ๋‹ค.
  • ์ด๊ฑฐ๋ž‘ ๋น„์Šทํ•œ ๋ฌธ์ œ๊ฐ€ 3 x n ํƒ€์ผ๋ง์ด๋ผ๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋˜๋ฐ ๊ทธ๊ฒƒ๋„ ๋น„์Šทํ•  ๊ฒƒ ๊ฐ™๋‹ค. ๋ฐ”๋กœ ๋‹ค์Œ์— ํ’€์–ด๋ด์•ผ์ง€
์ •ํ™•์„ฑ  ํ…Œ์ŠคํŠธ
ํ…Œ์ŠคํŠธ 1 ใ€‰	ํ†ต๊ณผ (0.78ms, 10.2MB)
ํ…Œ์ŠคํŠธ 2 ใ€‰	ํ†ต๊ณผ (0.09ms, 10MB)
ํ…Œ์ŠคํŠธ 3 ใ€‰	ํ†ต๊ณผ (0.69ms, 10.2MB)
ํ…Œ์ŠคํŠธ 4 ใ€‰	ํ†ต๊ณผ (2.12ms, 10.1MB)
ํ…Œ์ŠคํŠธ 5 ใ€‰	ํ†ต๊ณผ (0.07ms, 10.1MB)
ํ…Œ์ŠคํŠธ 6 ใ€‰	ํ†ต๊ณผ (0.88ms, 10.3MB)
ํ…Œ์ŠคํŠธ 7 ใ€‰	ํ†ต๊ณผ (0.07ms, 10.2MB)
ํ…Œ์ŠคํŠธ 8 ใ€‰	ํ†ต๊ณผ (1.19ms, 10.1MB)
ํ…Œ์ŠคํŠธ 9 ใ€‰	ํ†ต๊ณผ (0.59ms, 9.97MB)
ํ…Œ์ŠคํŠธ 10 ใ€‰	ํ†ต๊ณผ (2.33ms, 10MB)
ํ…Œ์ŠคํŠธ 11 ใ€‰	ํ†ต๊ณผ (0.74ms, 10.1MB)
ํ…Œ์ŠคํŠธ 12 ใ€‰	ํ†ต๊ณผ (0.17ms, 10.1MB)
ํ…Œ์ŠคํŠธ 13 ใ€‰	ํ†ต๊ณผ (0.27ms, 10.3MB)
ํ…Œ์ŠคํŠธ 14 ใ€‰	ํ†ต๊ณผ (0.43ms, 10.2MB)

ํšจ์œจ์„ฑ  ํ…Œ์ŠคํŠธ
ํ…Œ์ŠคํŠธ 1 ใ€‰	ํ†ต๊ณผ (5.03ms, 10.1MB)
ํ…Œ์ŠคํŠธ 2 ใ€‰	ํ†ต๊ณผ (9.52ms, 9.92MB)
ํ…Œ์ŠคํŠธ 3 ใ€‰	ํ†ต๊ณผ (4.48ms, 10MB)
ํ…Œ์ŠคํŠธ 4 ใ€‰	ํ†ต๊ณผ (3.50ms, 10.1MB)
ํ…Œ์ŠคํŠธ 5 ใ€‰	ํ†ต๊ณผ (14.83ms, 10.3MB)
ํ…Œ์ŠคํŠธ 6 ใ€‰	ํ†ต๊ณผ (27.54ms, 10.3MB)

๊ณ ์ˆ˜์˜ ํ’€์ด

  • ๊น”๋”ํ•˜๋‹ค. ๋‚˜์ฒ˜๋Ÿผ ์‚ฝ์งˆ ์•ˆํ•˜๊ณ  ๋ฐ”๋กœ ํ‘ผ ๋“ฏ ใ…ก.ใ…ก... ๋ฉ‹์ ธ๋ถ€๋Ÿฌ...
def solution(n):
    a, b = 1, 1
    for i in range(1, n):
        a, b = b, (a + b) % 1000000007
    return b
728x90
๋ฐ˜์‘ํ˜•