ํฐ์คํ ๋ฆฌ ๋ทฐ
๋ฌธ์
๋ฌธ์ ํ์ด
ํด๋น ๋ฌธ์ ๋ฅผ ๋ณด๊ณ ์ฒ์์ ๋๋ ์๊ฐ์ ์ํ ํ ๋ฌธ์ ์ธ๊ฐ? ์๊ฐ์ด ๋ค์๋ค. ํ์ง๋ง ์ํํ๋ฉด์ pop์ ํ๊ณ ์ ํ๋ index์ ์์นํ๋ ๊ฐ์ ์ ๊ฑฐํ๋ ๊ฒ์ ๋ค์ ๋นํจ์จ์ ์ด๋ค.
from collections import deque
def solution(k, n):
mans = deque([num + 1 for num in range(k)])
answer = []
cnt = n
while mans:
if cnt:
mans.append(mans.popleft())
cnt -= 1
else:
answer.append(str(mans.popleft()))
cnt = n
return answer
์์ ์ฝ๋ ์ฒ๋ผ ์ํ ํ๋ฅผ ์ํ ํ๋ค๊ณ ์๊ฐํ๊ณ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐฉ์์ ๊ตฌํํ์ฌ ์ ๋ต์ ์ ์ถํ๋ฉด ์ด๋จ๊น? deque๋ฅผ ์ด์ฉํด list์ pop์ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค ์ค๋ฒํค๋๊ฐ ์ค๊ฒ ์ง... ํ๊ณ ์ ์ถํด๋ณด์๋ค.๐ฎ
๊ฒฐ๊ณผ๋ ์ข์ง ์๋ค...๐ ๋ฌธ์ ๋ ๋ง์ถ ์ ์์ง๋ง ์๊ฐ์ด ๋ฌด๋ ค 3284ms๊ฐ ๊ฑธ๋ฆฐ๋ค. ๋ค์ ๊ฐ๋งํ ์๊ฐํด๋ณด๋ฉด list์ ์์๋ค์ rotation์ํฌ ๊ฒฝ์ฐ, %๋ฅผ ํตํด ์ฒ๋ฆฌํ๋๋ฐ ์ด๊ฒ๋ ๊ทธ ๋ฌธ์ ์ธ๊ฐ? ์๊ฐ์ด ๋ค์๋ค.
์ฆ, ๋ฌธ์ ํ์ด๋ ๋ค์๊ณผ ๊ฐ์ด ์ ๊ทผํ๋ฉด ๋๋ค.
-
์ํ ํ์ ๊ฐ์ด ์๊ฐํ๊ณ ์ ๊ทผํ์ฌ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐ ํ ์ ์๋ค.
- ํ์ด์ฌ์ด ์๋ ๋ค๋ฅธ ์ธ์ด๋ผ๋ฉด ์๊ฐ์ด ๋ ์งง๊ฒ ๋์ฌ ์๋ ์๋ค๊ณ ์๊ฐํ๋ค.
- list์ ์์๋ฅผ rotationํ๋ ๋ฌธ์ ๋ค ์ฒ๋ผ, % ์ฐ์ฐ์ ํ์ฉํ์ฌ index์ ๊ฐ์ ๋ฐ๋ก๋ฐ๋ก ๋์ถํ๋ฉด ๋๋ค.
์ฝ๋
import sys
def solution(k, n):
mans = [num + 1 for num in range(k)]
answer = []
pop_idx = 0
while mans:
pop_idx = (pop_idx + n) % len(mans)
answer.append(str(mans.pop(pop_idx)))
return answer
if __name__ == "__main__":
k, n = map(int, sys.stdin.readline().split())
print("<%s>" %(", ".join(solution(k, n - 1))))
์ํ ํ๋ฅผ ํตํด ์ ์ฒด๋ฅผ ์ํํ๋ ๋ฐฉ์๊ณผ ๋ฌ๋ฆฌ ํจ์ฌ ํจ์จ์ ์ผ๋ก ๋ฌธ์ ๋ฅผ ํ ์ ์๋ ๊ฒ์ ์ ์ ์๋ค.
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค: 10799 ์ ๋ง๋๊ธฐ (0) | 2020.06.23 |
---|---|
๋ฐฑ์ค: 17413 ๋จ์ด ๋ค์ง๊ธฐ 2 (0) | 2020.06.23 |
๋ฐฑ์ค: 17299 ์ค๋ฑํฐ์ (0) | 2020.06.23 |
๋ฐฑ์ค: 17298 ์คํฐ์ (4) | 2020.06.23 |
๋ฐฑ์ค: 1874 ์คํ ์์ด (0) | 2020.06.22 |