๐Ÿงฉ Algorithm/SWEA

[SWEA] 1225. [S/W ๋ฌธ์ œํ•ด๊ฒฐ ๊ธฐ๋ณธ] 7์ผ์ฐจ - ์•”ํ˜ธ์ƒ์„ฑ๊ธฐ (Python/D3)

devCloud 2024. 10. 21. 23:13
728x90

[๋ฌธ์ œ ๋งํฌ] ๐Ÿ‘‡

 

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()

๐Ÿ‘ฉ‍๐Ÿ’ป ํšŒ๊ณ 

์ž๋ฃŒ ๊ตฌ์กฐ๋ฅผ ์ด์šฉํ•ด ๋ฌธ์ œ๋ฅผ ํ’€์–ด์•ผ ํ•œ๋‹ค๋Š”๊ฒŒ ๋А๊ปด์กŒ๋‹ค. ์Šคํƒ์ด๋‚˜, ํž™, ๋ฑ์˜ ๊ฐœ๋…์„ ์กฐ๊ธˆ์ด๋ผ๋„ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด ์‰ฝ๊ฒŒ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์˜€๋‹ค. ์ถ”ํ›„์— ์Šคํƒ, ํž™ ๋ชจ๋“ˆ์— ๋Œ€ํ•ด์„œ ๋”ฐ๋กœ ์ •๋ฆฌํ•˜๊ณ  ์•”๊ธฐํ•ด์•ผ๊ฒ ๋‹ค.

 


 

728x90