๋ฌธ์
https://school.programmers.co.kr/learn/courses/30/lessons/131701
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก์ Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
๋ฌธ์ ์ค๋ช
์ฒ ํธ๋ ์์ด์ ๊ฐ์ง๊ณ ๋๊ธฐ ์ข์ํฉ๋๋ค. ์ด๋ ๋ ์ฒ ํธ๋ ์ด๋ค ์์ฐ์๋ก ์ด๋ฃจ์ด์ง ์ํ ์์ด์ ์ฐ์ํ๋ ๋ถ๋ถ ์์ด์ ํฉ์ผ๋ก ๋ง๋ค ์ ์๋ ์๊ฐ ๋ชจ๋ ๋ช ๊ฐ์ง์ธ์ง ์์๋ณด๊ณ ์ถ์ด์ก์ต๋๋ค. ์ํ ์์ด์ด๋ ์ผ๋ฐ์ ์ธ ์์ด์์ ์ฒ์๊ณผ ๋์ด ์ฐ๊ฒฐ๋ ํํ์ ์์ด์ ๋งํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์์ด [7, 9, 1, 1, 4] ๋ก ์ํ ์์ด์ ๋ง๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.

์ํ ์์ด์ ์ฒ์๊ณผ ๋์ด ์ฐ๊ฒฐ๋์ด ๋๊ธฐ๋ ๋ถ๋ถ์ด ์๊ธฐ ๋๋ฌธ์ ์ฐ์ํ๋ ๋ถ๋ถ ์์ด๋ ์ผ๋ฐ์ ์ธ ์์ด๋ณด๋ค ๋ง์์ง๋๋ค.
์ํ ์์ด์ ๋ชจ๋ ์์ elements๊ฐ ์์๋๋ก ์ฃผ์ด์ง ๋, ์ํ ์์ด์ ์ฐ์ ๋ถ๋ถ ์์ด ํฉ์ผ๋ก ๋ง๋ค ์ ์๋ ์์ ๊ฐ์๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- 3 ≤ elements์ ๊ธธ์ด ≤ 1,000
- 1 ≤ elements์ ์์ ≤ 1,000
์ ์ถ๋ ฅ ์

์ ์ถ๋ ฅ ์ ์ค๋ช
์
์ถ๋ ฅ ์ #1
๊ธธ์ด๊ฐ 1์ธ ์ฐ์ ๋ถ๋ถ ์์ด๋ก๋ถํฐ [1, 4, 7, 9] ๋ค ๊ฐ์ง์ ํฉ์ด ๋์ฌ ์ ์์ต๋๋ค.
๊ธธ์ด๊ฐ 2์ธ ์ฐ์ ๋ถ๋ถ ์์ด๋ก๋ถํฐ [2, 5, 10, 11, 16] ๋ค์ฏ ๊ฐ์ง์ ํฉ์ด ๋์ฌ ์ ์์ต๋๋ค.
๊ธธ์ด๊ฐ 3์ธ ์ฐ์ ๋ถ๋ถ ์์ด๋ก๋ถํฐ [6, 11, 12, 17, 20] ๋ค์ฏ ๊ฐ์ง์ ํฉ์ด ๋์ฌ ์ ์์ต๋๋ค.
๊ธธ์ด๊ฐ 4์ธ ์ฐ์ ๋ถ๋ถ ์์ด๋ก๋ถํฐ [13, 15, 18, 21] ๋ค ๊ฐ์ง์ ํฉ์ด ๋์ฌ ์ ์์ต๋๋ค.
๊ธธ์ด๊ฐ 5์ธ ์ฐ์ ๋ถ๋ถ ์์ด๋ก๋ถํฐ [22] ํ ๊ฐ์ง์ ํฉ์ด ๋์ฌ ์ ์์ต๋๋ค.
์ด๋ค ์ค ์ค๋ณต๋๋ ๊ฐ์ ์ ์ธํ๋ฉด ๋ค์๊ณผ ๊ฐ์ 18๊ฐ์ง์ ์๋ค์ ์ป์ต๋๋ค.
[1, 2, 4, 5, 6, 7, 9, 10, 11, 12, 13, 15, 16, 17, 18, 20, 21, 22]
ํ์ด
์ด ๋ฌธ์ ๋ ์ํ์ผ๋ก ๊ฐ์ฅ ๋๊ฐ๊ณผ ์ฒ์ ๊ฐ์ด ์ฐ๊ฒฐ๋์ด ์๋ค๋ ๊ฒ์ ์ ๊ธฐ์ตํด์ผ ํ๋ค.
๋ฌธ์ ๋ฅผ ํผ ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ๋ค.
1. ๊ธฐ์กด ๋ฆฌ์คํธ๋ฅผ ๋ณต์ฌํด temp_e ๋ณ์์ ์ ์ฅํ๋ค.
2. temp_e์์ n๊ฐ์ฉ ๋ฌถ์ด ํฉ์ ๊ตฌํ ํ ๋ฐ, ๋ค์ ๊ฐ์ฅ ๋ ์์์ ์ฐ๊ฒฐ๋๋ ์์๋ค์ ๋ฏธ๋ฆฌ ๋ถ์ฌ์ค๋ค.
์๋ฅผ ๋ค์ด, n์ด 3์ด๋ผ๋ฉด 3๊ฐ์ฉ ๋ฌถ์ ์ ์๋ค.
7, 9, 1, 1, 4์์ 4, 7, 9๊ฐ ๋์ฌ ์ ์์ผ๋ฏ๋ก ๋ฏธ๋ฆฌ 7, 9๋ฅผ ๋ค์ ๋ถ์ฌ์ค๋ค.
๊ทธ๋์ ๋ค์๊ณผ ๊ฐ์ด ์ ๋ฆฌํ ์ ์๋ค.
i) n = 2 ์ธ ๊ฒฝ์ฐ, 7, 9, 1, 1, 4 => 7, 9, 1, 1, 4, 7
i) n = 3 ์ธ ๊ฒฝ์ฐ, 7, 9, 1, 1, 4 => 7, 9, 1, 1, 4, 7, 9
i) n = 4 ์ธ ๊ฒฝ์ฐ, 7, 9, 1, 1, 4 => 7, 9, 1, 1, 4, 7, 9, 1
์ด๋ ๊ฒ ๋ฏธ๋ฆฌ ๋ถ์ฌ ๋ฃ์ ๋ฐฐ์ด์ ๋ค์ ๋ง๋ค์ด์ฃผ๋ฉด, ์ฝ๊ฒ ํฉ์ ๊ตฌํ ์ ์๋ค.
3. find_case๋ผ๋ ํจ์๋ฅผ ๋ง๋ค์ด n๊ฐ์ฉ ๋ฌถ์ด ๋์ฌ ์ ์๋ ํฉ์ ๊ตฌํ๋ค.
์ ๋ต ์ฝ๋
์ ์์๋๋ก ๊ตฌํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๊ตฌํํ ์ ์๋ค.
def solution(elements):
fin_list = [] # ์ต์ข
์ ์ผ๋ก ๋ฐ์ํ ๋ชจ๋ ํฉ์ ์ ์ฅํ ๋ฆฌ์คํธํ์ ๋ณ์
fin_list += elements # 1๊ฐ์ฉ ๋ฌถ๋ ๊ฒฝ์ฐ, ๊ธฐ์กด ๋ฆฌ์คํธ์ ๊ฐ ์์๊ฐ ๋ค์ด๊ฐ๋ฏ๋ก ์ถ๊ฐ
fin_list.append(sum(elements)) # ๊ฐ์ฅ ๋ง์ง๋ง์ ๊ฒฝ์ฐ, ๋ชจ๋ ์์์ ํฉ์ด ๋๋ฏ๋ก ๋ฏธ๋ฆฌ ์ถ๊ฐ
# ๋ฐ๋ณต๋ฌธ์ผ๋ก 2๊ฐ์ฉ, 3๊ฐ์ฉ, .. ์ ์ฒด๊ฐ์-1๊ฐ์ฉ ๋ฌถ์์ ๋ ๋์ค๋ ํฉ์ ๊ตฌํ๋ค.
for i in range(2, len(elements)) :
# find_case์์ ๋ฐํ๋ ๊ฐ์ ๋ฆฌ์คํธ์ ์ถ๊ฐํ๋ค.
fin_list += find_case(i, elements)
return len(set(fin_list)) # ์ค๋ณต์ ์ ๊ฑฐํด์ผ ํ๋ฏ๋ก, set์ผ๋ก ๋ณํํ ๋ค ๊ธธ์ด ์ถ๋ ฅ
# n๊ฐ์ฉ elements๋ฅผ ๋ฌถ์์ ๋ ๋์ค๋ ํฉ์ ๊ฒฝ์ฐ๋ค์ ๋ฐํํ๋ ํจ์์ด๋ค.
def find_case(n, elements) :
temp_e = elements.copy() # ๋ณต์ฌํ์ง ์์ผ๋ฉด ๊ธฐ์กด elements๊น์ง ๋ฐ๋๋ฏ๋ก copy()ํ๋ค.
sum_list = [] # ๋ฐํํ๊ธฐ ์ํ ํฉ๋ค์ ์ ์ฅํ๋ ๋ฆฌ์คํธํ ๋ณ์
for i in range(n-1) : # ๋ ์์์ ์ฐ๊ฒฐ๋๋ ์๋ถ๋ถ์ ์์๋ค์ ๋ฏธ๋ฆฌ ๋ค์ ๋ถ์ฌ์ค๋ค.
temp_e.append(elements[i])
for i in range(len(temp_e)-n+1): # ๋ฐ๋ณต๋ฌธ์ผ๋ก n๊ฐ์ฉ ๋ฌถ์ด ํฉ์ ๊ตฌํ๋ค.
temp = temp_e[i:i+(n%cnt)]
sum_list.append(sum(temp))
return sum_list
์ฝ๋์ ์์ ์๋ ์ฃผ์์ ์ฐจ๊ทผ์ฐจ๊ทผ ์ฝ์ผ๋ฉด ์ดํด์ ๋ง์ ๋์์ด ๋ ๊ฒ์ด๋ค.
๋ฌผ๋ก ์ด๋ ๊ฒ ํธ๋ ์ฌ๋๋ค์ ๊ฑฐ์ ์์์ง๋ง, ๋์์ด ๋์๊ธฐ๋ฅผ..!
'๐ ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [ํ๋ก๊ทธ๋๋จธ์ค] : ์์ด ๋๋ง์๊ธฐ (1) | 2025.07.17 |
|---|---|
| [ํ๋ก๊ทธ๋๋จธ์ค] : [1์ฐจ] ๋น๋ฐ์ง๋ (0) | 2025.07.16 |
| [ํ๋ก๊ทธ๋๋จธ์ค] : ๋ฉ๋ฆฌ๋ฐ๊ธฐ (0) | 2025.07.13 |
| [DP] ํ์ด์ฌ์ผ๋ก Dynamic Programming ์ ๋ณตํ๊ธฐ (0) | 2025.07.13 |
| ํ๋ก๊ทธ๋๋จธ์ค : ๊ทค ๊ณ ๋ฅด๊ธฐ (0) | 2025.06.28 |