ํฐ์คํ ๋ฆฌ ๋ทฐ
728x90
๋ฐ์ํ
๋ฌธ์
๋ฌธ์ ํ์ด
๊ฐ ํ์ ์ ๋ค์ ์๋ฒ ํ์ ์ผ๋ก ๊ฐ๊ธฐ ์ํ ๊ฐ๋ค์ด ์ ํ์๋ค. ํด๋น ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์์์ด๋ฉด ์ข์ธก, ์์์ด๋ฉด ์ฐ์ธก์ผ๋ก ๋ค์์ ํฐํธ๋ฆด ํ์ ์ ์ ํํ๋ค. ํฐํธ๋ฆฐ ์์๋๋ก ํ์ ์ ๋ฒํธ(Index)๋ฅผ ๊ธฐ๋กํ ํ, ์ ๋ต์ผ๋ก ๋ฐํํ๋ ๋ฌธ์ ์ด๋ค. ๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ํด ์๋์ ๊ฐ์ด ์ ๊ทผํ์๋ค.
- ๋ชจ๋๋ฌ ์ฐ์ฐ์ ํตํด, ํฐํธ๋ฆฌ๊ณ ์ ํ๋ ํ์ ์ ๋ฐ๋ก ์ฐพ์ ์ ์์ ๊ฒ์ด๋ค.
- ํ์ง๋ง, ์
๋ ฅ๋ ํ์ ๋ค ์ ์ฒด๋ฅผ left, right shift ํ๋ ๋ฐฉ์์ ํตํด ๋ต์ ์ฐพ๊ณ ์ ํ๋ค.
- Python์ ๊ฒฝ์ฐ, list๋ shift๋ฅผ ์ง์ํ์ง ์๋๋ค.
- ์ด๋ `pop(0)`์ `insert(index, value)`์ ๊ฐ์ ๋ฉ์๋๋ค์ด O(N)์ ์๊ฐ์ ์๋นํ๊ธฐ ๋๋ฌธ์ด๋ค.
- ๋ฐ๋ผ์ shift๊ฐ ํ์ํ ๊ฒฝ์ฐ, `deque`๋ฅผ ํ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํ์ด์ผ ํ๋ค.
- Python์ ๊ฒฝ์ฐ, list๋ shift๋ฅผ ์ง์ํ์ง ์๋๋ค.
์ฝ๋
from sys import stdin
from collections import deque
if __name__ == "__main__":
N = int(stdin.readline())
q = deque(enumerate(map(int, stdin.readline().split())))
answer = []
while True:
idx, paper = q.popleft()
answer.append(idx + 1)
if not q:
break
if paper > 0:
# rotate(-) == append(q.popleft())
q.rotate(-(paper - 1))
elif paper < 0:
# rotate(+) == appendleft(q.pop())
q.rotate(-paper)
print(' '.join(map(str, answer)))
728x90
๋ฐ์ํ
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค: 2800 ๊ดํธ ์ ๊ฑฐ (0) | 2021.03.12 |
---|---|
๋ฐฑ์ค: 2504 ๊ดํธ์ ๊ฐ (0) | 2021.03.12 |
๋ฐฑ์ค: 2493 ํ (0) | 2021.03.10 |
๋ฐฑ์ค: 1966 ํ๋ฆฐํฐ (0) | 2021.03.09 |
๋ฐฑ์ค: 10422 ๊ดํธ (0) | 2020.11.09 |
๋๊ธ
๊ธ ๋ณด๊ดํจ
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ