๋ฐฑ์ค€ 2346 ํ’์„  ํ„ฐ๋œจ๋ฆฌ๊ธฐ ํŒŒ์ด์ฌ

2022. 7. 4. 18:32ใ†๐Ÿ”ฑ Algorithm/Else

https://www.acmicpc.net/problem/2346

 

2346๋ฒˆ: ํ’์„  ํ„ฐ๋œจ๋ฆฌ๊ธฐ

1๋ฒˆ๋ถ€ํ„ฐ N๋ฒˆ๊นŒ์ง€ N๊ฐœ์˜ ํ’์„ ์ด ์›ํ˜•์œผ๋กœ ๋†“์—ฌ ์žˆ๊ณ . i๋ฒˆ ํ’์„ ์˜ ์˜ค๋ฅธ์ชฝ์—๋Š” i+1๋ฒˆ ํ’์„ ์ด ์žˆ๊ณ , ์™ผ์ชฝ์—๋Š” i-1๋ฒˆ ํ’์„ ์ด ์žˆ๋‹ค. ๋‹จ, 1๋ฒˆ ํ’์„ ์˜ ์™ผ์ชฝ์— N๋ฒˆ ํ’์„ ์ด ์žˆ๊ณ , N๋ฒˆ ํ’์„ ์˜ ์˜ค๋ฅธ์ชฝ์— 1๋ฒˆ ํ’์„ 

www.acmicpc.net

 

 

 

ํ•ต์‹ฌ

์ด ๋ฌธ์ œ๋ฅผ ์‰ฝ๊ฒŒ ํ’€ ์ˆ˜ ์žˆ๋Š” ํ•ต์‹ฌ์€ deque() ์ž๋ฃŒํ˜•์˜ rotate() ๋ฉ”์„œ๋“œ๋‹ค.

rotate(n)๋Š” deque ์˜ ๋‚ด์žฅํ•จ์ˆ˜๋กœ, n ์ด ์–‘์ˆ˜๋ฉด ์šฐ์ธก์œผ๋กœ, ์Œ์ˆ˜๋ฉด ์ขŒ์ธก์œผ๋กœ ํšŒ์ „ํ•œ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค. 

 

์ฝ”๋“œ

import sys
from collections import deque
input = sys.stdin.readline

n = int(input())
q = deque(enumerate(map(int, input().split())))
ans = []

while q:
    idx, paper = q.popleft()
    ans.append((idx + 1))
    if paper > 0:
        q.rotate(-(paper - 1))
    else:
        q.rotate(-paper)
print(' '.join(map(str, ans)))

"""
5
3 2 1 -3 -1
"""

 

ํ’€์ด

๋ฌธ์ œ์—์„œ ์–ป๊ณ ์ž ํ•˜๋Š” ๊ฒƒ์€ ์ข…์ด์˜ ๋ฒˆํ˜ธ๊ฐ€ ์•„๋‹ˆ๋ผ, ํ’์„ ์˜ ์œ„์น˜ (์ธ๋ฑ์Šค) ๋‹ค.

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ํ’์„ ์˜ ์ธ๋ฑ์Šค๋ฅผ ์šฐ์„  ans ๋ฆฌ์ŠคํŠธ์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ์ž…๋ ฅ์„ ๋ฐ›์•„์•ผ ํ•œ๋‹ค. 

enumerate() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, (index, value) ํ˜•ํƒœ๋กœ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

q = deque(enumerate(map(int, input().split())))

 

์ด์ œ ์ข…์ด์˜ ์ˆซ์ž๊ฐ€ ์–‘์ˆ˜ / ์Œ์ˆ˜ ๋ƒ์— ๋”ฐ๋ผ ํšŒ์ „ ๋ฐฉํ–ฅ์„ ๋ถ„๊ธฐํ•˜๋ฉด ๋œ๋‹ค. 

๊ธฐ์กด์˜ ํ’์„ ์„ ํ„ฐ๋œจ๋ฆฌ๊ณ  paper ์˜ ์ˆซ์ž๋งŒํผ ์›€์ง์—ฌ์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—

paper ๊ฐ€ ์–‘์ˆ˜์ผ ๋• (paper - 1) ์ฒ˜๋ฆฌ ํ›„์— ์ธ๋ฑ์Šค๋ฅผ ์ด๋™,

paper ๊ฐ€ ์Œ์ˆ˜ ์ผ ๋•, paper ๋งŒํผ ์ขŒ์ธก์œผ๋กœ ํšŒ์ „์‹œํ‚ค๋ฉด ๋œ๋‹ค.