๐ ํ์ด์ฌ ์ผ๋ก ํ์ด
๐ ๋ฌธ์ ๋งํฌ :
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
๐ ๋ฌธ์ ์ค๋ช :
ํจ์ง์ด๋ ๋ฉ๋ฆฌ ๋ฐ๊ธฐ๋ฅผ ์ฐ์ตํ๊ณ ์์ต๋๋ค. ํจ์ง์ด๋ ํ๋ฒ์ 1์นธ, ๋๋ 2์นธ์ ๋ธ ์ ์์ต๋๋ค.
์นธ์ด ์ด 4๊ฐ ์์ ๋, ํจ์ง์ด๋
(1์นธ, 1์นธ, 1์นธ, 1์นธ)
(1์นธ, 2์นธ, 1์นธ)
(1์นธ, 1์นธ, 2์นธ)
(2์นธ, 1์นธ, 1์นธ)
(2์นธ, 2์นธ)
์ 5๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ๋งจ ๋ ์นธ์ ๋๋ฌํ ์ ์์ต๋๋ค. ๋ฉ๋ฆฌ๋ฐ๊ธฐ์ ์ฌ์ฉ๋ ์นธ์ ์ n์ด ์ฃผ์ด์ง ๋, ํจ์ง์ด๊ฐ ๋์ ๋๋ฌํ๋ ๋ฐฉ๋ฒ์ด ๋ช ๊ฐ์ง์ธ์ง ์์๋ด, ์ฌ๊ธฐ์ 1234567๋ฅผ ๋๋ ๋๋จธ์ง๋ฅผ ๋ฆฌํดํ๋ ํจ์, solution์ ์์ฑํ์ธ์. ์๋ฅผ ๋ค์ด 4๊ฐ ์
๋ ฅ๋๋ค๋ฉด, 5๋ฅผ returnํ๋ฉด ๋ฉ๋๋ค.
๐ ์ ํ ์ฌํญ
- n์ 1 ์ด์, 2000 ์ดํ์ธ ์ ์์ ๋๋ค.
๐ ์ ์ถ๋ ฅ ์

์ถ์ธก)
n์ ๊ฐ์๋ฅผ ์ผ๋จ 2๋ก ๋๋ ๋ชซ์ ๊ตฌํ๋ค .
๋ชซ์ด 0์ด๋ฉด n๋ 1๋ฐ์ ์์ผ๋ฏ๋ก cnt์ 1์ ๋ฃ์ด ๋ฐํ
๋ชซ์ด 0์ด ์๋๋ฉด ๋ชซ์ ๊ธธ์ด ๋งํผ for๋ฌธ์ ๋๋ฆฐ๋ค.
for๋ฌธ์ i๋ฅผ 2์นธ์ ๊ฐ์๋ก ๋ณด๊ณ n์์ 2*i๋ฅผ ๋บ๊ฑธ 1์นธ์ ๊ฐ์๋ก ๋ณธ๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ ํด์์์ 2์นธ์ ๊ฐ์์ 1์นธ์ ๊ฐ์๋ก ์ค๋ณต์๋ ์์ด์ ๊ฒฝ์ฐ ์๋ฅผ ๊ตฌํด ์ต์ข ๊ฐ์ +๋์ ํ๋ค.
๋ชจ๋ for๋ฌธ์ ๋๋ฉด์ ๊ฒฝ์ฐ์ ์๋ฅผ ๋์ ํ๊ณ ๋ง์ง๋ง์ผ๋ก ๋ฆฌํดํ๋ค.
์์ค์ฝ๋)
* 1์ฐจ) ์คํจ : ์ ํ๋ 37.5์
def solution(n):
answer = 0
num = int(n/2)
if num == 0 :
return 1
for i in range(0, num + 1):
two_num = i
one_num = n-(2*i)
if two_num == 0 or one_num == 0 :
answer += 1
continue
top_num = factorial(two_num+one_num, 1)
b_case = factorial(two_num, 1)
c_case = factorial(one_num, 1)
case_num = int(top_num / (b_case * c_case))
answer += case_num
return answer % 1234567
def factorial(num, result):
if num == 0 :
return result
result *= num
num -= 1
return factorial(num, result)
* 2์ฐจ) ์ฑ๊ณต : ๋ค๋ฅธ ์ฌ๋๋ค์ด DP๋ฐฉ์ ์ ์ฉํ๋ค๋ ๊ฑฐ ์๊ณ ๊ณต๋ถ ํ ์ ์ฉ
def solution(n):
n_list = [0] * n
for i in range(n):
if i == 0 :
n_list[i] = 1
elif i == 1 :
n_list[i] = 2
else:
n_list[i] = n_list[i-1] + n_list[i-2]
return n_list[n-1] % 1234567
๋ฆฌ๋ทฐ)
1์ฐจ)
์ฐพ์๋ ์ด๋ ค์ด ๊ธธ๋ก ์ฐพ์๊ฐ๊ณ ์์๊ตฌ๋ ์ถ๋ค ๋๋ ์ฐธ.. ์์ด๋ก ํ๋ผ๊ณ ํ๋๋ฐ
๋๋ฆ ํ์ฌ์ ์ฌ๊ทํจ์๋ก ํฉํ ๋ฆฌ์ผ ๊ตฌํ๊น์ง ํ๋๋ฐ ๐คฃ
๋์ด์ ํด๊ฒฐ์ด ์๋์ ์ง๋ฌธํ๊ธฐ ๊ธ๋ค์ ๋ดค๋ค
๊ทธ ์ค ๋๊ฐ์ด ์์ด๋ก ํ์ด๋ณธ ์ฌ๋์ด ํ ์คํธ ์์๋ก 2000์ ๋ฃ์ด๋ณด๋ผ๋ ๊ธ์ด ์์๋ค.

์... ์ด๋ฐ ใ ใ ใ ์ค๋ฒํ๋ก์ฐ!
์ด๋ฐ ์ค๋ฅ๊ฐ ๋ ์ ์๋ ์ํฉ๋ ์๊ฐํ์ด์ผ์ง!
๊ทธ๋ผ ๋ค๋ฅธ ์ฌ๋๋ค์ ์ด ๋ฌธ์ ๋ฅผ ์ด๋ป๊ฒ ์ ๊ทผํ์ ๊นํ๊ณ ๋ณด๋ DP๋ก ํธ๋ ๊ฑธ ๋ณด๊ฒ ๋ฌ๋ค.
์ผ๋จ ์ ์ด๊ฒ DP์ผ๊น? ์ถ์ด์ ๊ฒฝ์ฐ์ ์๋ฅผ ์ฐจ๋ก์ฐจ๋ก ๋ฐ์ ธ๋ดค๋ค.
| n | ๊ฒฝ์ฐ์ ์ | ||
| 1 | (1์นธ) | 1 | |
| 2 | (1์นธ,1์นธ), (2์นธ) | 2 | |
| 3 | (1์นธ,1์นธ,1์นธ), (2์นธ, 1์นธ), (1์นธ, 2์นธ) | 3 | 1+2 |
| 4 | (1์นธ,1์นธ,1์นธ,1์นธ),(2์นธ,1์นธ,1์นธ), (1์นธ, 2์นธ, 1์นธ), (2์นธ,1์นธ,1์นธ), (2์นธ, 2์นธ) | 5 | 2+3 |
| 5 | (1์นธ,1์นธ,1์นธ,1์นธ,1์นธ),(2์นธ,1์นธ,1์นธ,1์นธ), (1์นธ,2์นธ,1์นธ,1์นธ),(1์นธ,1์นธ,2์นธ,1์นธ),(1์นธ,1์นธ,1์นธ,2์นธ), (2์นธ, 2์นธ,1์นธ),(2์นธ,1์นธ,2์นธ), (1์นธ,2์นธ,2์นธ) | 8 | 3+5 |
| ํผ๋ณด๋์น ์์ด ํํ๋ก ๋์จ๋ค |
์, ํผ๋ณด๋์น!
๊ทธ๋์ ๋ฐ๋ก ์ ์ฉ!
์ผ๋จ ์์ ์๋ค์ ๋ค ๋ฏธ๋ฆฌ ์ ์ฅํด ๋๋ ค๋ฉด n๊ฐ ๋งํผ 0์ด ๋ ๋ฐฐ์ด์ ๋ง๋ ๋ค.
n_list = [0] * n
n ๋งํผ for๋ฌธ์ ๋๋ฆด๊ฑด๋ฐ n์ด 1๊ณผ 2์ผ ๋๋ ์์ 2๊ฐ์ ์๊ฐ ์์ผ๋ฏ๋ก ๊ทธ๋ฅ ๊ฐ๊ฐ 1๊ณผ 2์ ์ธ๋ฑ์ค์ ๋์ ํ๋ค.
3 ์ด์ ๋ถํฐ๋ ๊ทธ ์ธ๋ฑ์ค์ ์ ๊ฐ๊ณผ ๋ฐ๋ก ์ ์ ๊ฐ์ ๋ํด ๋์ ํ๋ค.
n ๋งํผ for๋ฌธ์ ๋์ ๋ฐฐ์ด์ ์์ฑํ๋ฉด n-1์ ์ธ๋ฑ์ค ๊ฐ์ ๊ฐ์ ธ์ ๋ฆฌํดํ๋ค.
๊ทธ๋ฌ๋ฉด ์ต์ข ์ ์ผ๋ก ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ๊ฒ ๋๋ค!
ํด ์์ง๋ ๊ฒฝํ์น๊ฐ ๋ง์ด ๋ถ์กฑํ๋ค. ๋ฌธ์ ํ์ ์ ๋น ๋ฅด๊ณ ์ ํํ๊ฒ ํ ์ ์๋๋ก ๋ง์ด ํ์ด๋ณด์.
'Coding Test > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| Programmers] ๊ทค ๊ณ ๋ฅด๊ธฐ (0) | 2023.03.28 |
|---|---|
| ์์ด (0) | 2023.03.18 |
| Programmers] [1์ฐจ] ์บ์ (0) | 2023.03.18 |
| Programmers] ๊ดํธ ํ์ ํ๊ธฐ (0) | 2023.03.14 |
| Programmers] ์ต์๊ฐ ๋ง๋ค๊ธฐ (0) | 2023.03.13 |
