[๋ฌธ์ ๋งํฌ] ๐
SW Expert Academy
SW ํ๋ก๊ทธ๋๋ฐ ์ญ๋ ๊ฐํ์ ๋์์ด ๋๋ ๋ค์ํ ํ์ต ์ปจํ ์ธ ๋ฅผ ํ์ธํ์ธ์!
swexpertacademy.com
ํ์ด
๐กํต์ฌ : ์๋ฃ ๊ตฌ์กฐ - ํ ์ด์ฉ
ํ์ด์ฌ์์์ ํ - deque
deque(๋ฑ)๋ ํ์ด์ฌ์ collections ๋ชจ๋์์ ์ ๊ณตํ๋ ์๋ฐฉํฅ ํ๋ก, ๋ฆฌ์คํธ์ ์ ์ฌํ์ง๋ง ์์ชฝ ๋์์ ๋น ๋ฅธ ์ฝ์ ๊ณผ ์ญ์ ๊ฐ ๊ฐ๋ฅํ๋ค. ๋ฆฌ์คํธ์ ๋น๊ตํด ์๊ฐ ๋ณต์ก๋๊ฐ ๋ ํจ์จ์ ์ด๊ธฐ ๋๋ฌธ์, ์์ชฝ์์ ๋ฐ์ดํฐ๋ฅผ ์์ฃผ ์ถ๊ฐํ๊ฑฐ๋ ์ ๊ฑฐํ๋ ๊ฒฝ์ฐ deque๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
[deque์ ๋ํ ์์ธํ ์ค๋ช ] ๐ https://dev-cloud.tistory.com/322
1. ํ๋ฅผ ์์ฑํ๊ณ ์ ๋ ฅ ๋ฐ์ 8๊ฐ์ ์ซ์ ๋ฆฌ์คํธ๋ฅผ ๋ด๋๋ค.
data_deque = deque(data) # ํ ์์ฑ
2. ์ฌ์ดํด์ ์ํ ๋ณ์์ 1์ ๋ด์ ์ค์ ํ๋ค.
cycle = 1
3. popleft() ์ ์ด์ฉํด ๋ฑ์์ ๊ฐ์ฅ ์ผ์ชฝ ๊ฐ์ ๊บผ๋ธ ํ, ๊ทธ ๊ฐ์ ๊ฐ์์ํจ๋ค.
num = data_deque.popleft() #๊ฐ์ฅ ์ผ์ชฝ ๊ฐ์ ๋ฐํ, ์ค๋ฅธ์ชฝ ๋์ pop()
num -= cycle
4. ๊ฐ์์ํจ ๊ฐ์ด 0๋ณด๋ค ์์์ง๊ฑฐ๋ 0์ผ ๊ฒฝ์ฐ 0์ผ๋ก ์ ์ฅํ๊ณ , ์ํธ๋ฅผ ๊ณ ์ ํ๋ค.
if num <= 0: #0๋ณด๋ค ์์์ง๊ฑฐ๋ 0์ผ ๊ฒฝ์ฐ 0์ผ๋ก ์ ์ฅ
num = 0
data_deque.append(num)
break
- ๊ฐ์์ํจ ๊ฐ์ด 0์ด๊ฑฐ๋, 0๋ณด๋ค ์์์ก์ ๋ ์ซ์๋ฅผ 0์ผ๋ก ์ค์ ํ๋ค.
- ๊ทธ ๊ฐ์ ๋ฑ์ ๋งจ ์ค๋ฅธ์ชฝ ๋์ ์ถ๊ฐํ๋ค.
- ๊ทธ๋ฆฌ๊ณ ๋ฐ๋ณต๋ฌธ์ ์ค๋จํ๋ค.
5. ๊ฐ์์ํจ ๊ฐ์ด 0 ์ด์์ด๋ฉด ์ค๋ฅธ์ชฝ ๋์ append()๋ฅผ ์ด์ฉํด ๊ฐ์ ์ถ๊ฐํ๋ค. ๊ทธ๋ฆฌ๊ณ cycle ๋ณ์๋ฅผ ์ฆ๊ฐํ๋ค.
data_deque.append(num) #์ค๋ฅธ์ชฝ ๋์ ์๋ก์ด ๊ฐ์ ์ถ๊ฐ, ์ผ์ชฝ ๋์ appendleft()
cycle += 1
6. ์ฌ์ดํด์ ์ํ ๋ณ์๊ฐ 5๋ฅผ ์ด๊ณผํ๋ฉด ๋ค์ 1๋ก ์ด๊ธฐํํ๋ค.
if cycle > 5:
cycle = 1
Solution
from collections import deque
for tc in range(10):
tc_num = int(input())
data = list(map(int, input().split()))
data_deque = deque(data) # ํ ์์ฑ
cycle = 1
while data_deque:
num = data_deque.popleft() #๊ฐ์ฅ ์ผ์ชฝ ๊ฐ์ ๋ฐํ, ์ค๋ฅธ์ชฝ ๋์ pop()
num -= cycle
if num <= 0: #0๋ณด๋ค ์์์ง๊ฑฐ๋ 0์ผ ๊ฒฝ์ฐ 0์ผ๋ก ์ ์ฅ
num = 0
data_deque.append(num)
break
data_deque.append(num) #์ค๋ฅธ์ชฝ ๋์ ์๋ก์ด ๊ฐ์ ์ถ๊ฐ, ์ผ์ชฝ ๋์ appendleft()
cycle += 1
if cycle > 5:
cycle = 1
print("#%d" % tc_num, end=' ')
for i in data_deque:
print("%d" %i, end=' ')
print()
๐ฉ๐ป ํ๊ณ
์๋ฃ ๊ตฌ์กฐ๋ฅผ ์ด์ฉํด ๋ฌธ์ ๋ฅผ ํ์ด์ผ ํ๋ค๋๊ฒ ๋๊ปด์ก๋ค. ์คํ์ด๋, ํ, ๋ฑ์ ๊ฐ๋ ์ ์กฐ๊ธ์ด๋ผ๋ ์๊ณ ์๋ค๋ฉด ์ฝ๊ฒ ํ ์ ์๋ ๋ฌธ์ ์๋ค. ์ถํ์ ์คํ, ํ ๋ชจ๋์ ๋ํด์ ๋ฐ๋ก ์ ๋ฆฌํ๊ณ ์๊ธฐํด์ผ๊ฒ ๋ค.
'๐งฉ Algorithm > SWEA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [SWEA] 1213. [S/W ๋ฌธ์ ํด๊ฒฐ ๊ธฐ๋ณธ] 3์ผ์ฐจ - String (Python/D3) (0) | 2024.10.22 |
|---|---|
| [SWEA] 3456. ์ง์ฌ๊ฐํ ๊ธธ์ด ์ฐพ๊ธฐ (Python/D3) (0) | 2024.10.22 |
| [SWEA] 1220. [S/W ๋ฌธ์ ํด๊ฒฐ ๊ธฐ๋ณธ] 5์ผ์ฐจ - Magnetic (Python/D3) (0) | 2024.10.21 |
| [SWEA] 3314. ๋ณด์ถฉํ์ต๊ณผ ํ๊ท (Python/D3) (0) | 2024.10.21 |
| [SWEA] 5601. [Professional] ์ฅฌ์ค ๋๋๊ธฐ (Python/D3) (1) | 2024.10.21 |