๊ณต๋์ง๊ธฐ#
ํ๋ก๊ทธ๋๋จธ์ค
์ ๋ต๋ฅ : 81%
์์ญ:์ํ
๋์ ์์ ์ ๋ต๋ฅ :63.8%
์์น๋ฅ :1.5%
๋ฌธ์ ์ค๋ช
๋จธ์ฑ์ด๋ ์น๊ตฌ๋ค๊ณผ ๋๊ทธ๋๊ฒ ์์ ๊ณต ๋์ง๊ธฐ ๊ฒ์์ ํ๊ณ ์์ต๋๋ค. ๊ณต์ 1๋ฒ๋ถํฐ ๋์ง๋ฉฐ ์ค๋ฅธ์ชฝ์ผ๋ก ํ ๋ช ์ ๊ฑด๋๋ฐ๊ณ ๊ทธ๋ค์ ์ฌ๋์๊ฒ๋ง ๋์ง ์ ์์ต๋๋ค. ์น๊ตฌ๋ค์ ๋ฒํธ๊ฐ ๋ค์ด์๋ ์ ์ ๋ฐฐ์ด numbers์ ์ ์ K๊ฐ ์ฃผ์ด์ง ๋, k๋ฒ์งธ๋ก ๊ณต์ ๋์ง๋ ์ฌ๋์ ๋ฒํธ๋ ๋ฌด์์ธ์ง return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด๋ณด์ธ์.
์ ํ์ฌํญ
2 < numbers์ ๊ธธ์ด < 100
0 < k < 1,000
numbers์ ์ฒซ ๋ฒ์งธ์ ๋ง์ง๋ง ๋ฒํธ๋ ์ค์ ๋ก ๋ฐ๋ก ์์ ์์ต๋๋ค.
numbers๋ 1๋ถํฐ ์์ํ๋ฉฐ ๋ฒํธ๋ ์์๋๋ก ์ฌ๋ผ๊ฐ๋๋ค.
# input setting
problem_num = '๊ณต๋์ง๊ธฐ'
import os, sys
path = os.getcwd() + f'\\txt\\{problem_num}' + '.txt'
sys.stdin = open(path,'r')
num = list(map(int,sys.stdin.readline().strip().split(',')))
k = int(sys.stdin.readline())
from collections import deque
def solution(numbers, k):
dq = deque(numbers)
for i in range(k-1):
dq.rotate(-2)
return dq[0]
solution(num,k)
3
์ฝ๊ฐ ์ ๊ด๋ จ ๋ฌธ์ ๋ ๋ณดํต queue์ ๊ด๋ จ์ด ์์ ํ๋ฅ ์ด ํฌ๊ณ , queue๋ ์ ์ ์ ์ถ์ ๊ฐ๋ ์ผ๋ก ๋ค์ด๊ฐ๊ฒ์ ๋ฅ๊พธ๋ฉ์ ๋ค์ ๋ฃ๋ ์์ผ๋ก ํ์ฉ๋๋ค. ๋จผ์ ๋ค์ด์จ ๋์ ๋จผ์ ๋๊ฐ๋ฉด์ ๋์์ ๋ค๋ก ๋ค์ด๊ฐ๋ ๊ฒ. rotate n=-2๋ฅผ ์ฌ์ฉํ๋ฉด ํธํ ๊ฒ์ผ๋ก ๋ณด์ธ๋ค.
short coding#
def solution(numbers, k):
return numbers[2 * (k - 1) % len(numbers)]
๋๋ O(k)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง ๋ฐ๋ฉด, ์ด ์์ฃผ ๋จ์ดํด๋ณด์ด๋ ํจ์๋ O(1)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ค. ์ซ๋ค์ซ๋ค. ๊ฐ๋ ์ฑ์ ๋ด ์ฝ๋๊ฐ ์ข์ง๋ง ์์ ์ฝ๋ ์์ฒด๋ฅผ ์ดํดํด๋ณด๋ ๊ฒ๋ ์ค์ํ ๊ฒ์ผ๋ก ๋ณด์ธ๋ค.
์์์๋ k-1 * 2 % len(numbers) ๋ผ๋ index๋ฅผ ์ฐพ๋ ๋ฐฉ์์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋๋ฐ, 2๋ 2์นธ์ฉ ์์ง์ด๋ ๊ฒ์ด๊ณ ์ํ์์ ํ์ ํ๋ฉด์ ์์ง์ด๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋ง์ง๋ง์ ๊ธธ์ด๋ก ๋๋ ์ ๋๋จธ์ง๋ฅผ ์ทจํ๋ ๊ฒ์ด๋ค. ์ด๋ ์ํ ํ์ ์ ํน์ฑ์ ๊ฐ๊ฒฐํ ์ธ๋ฑ์ค ์ฐ์ฐ์ผ๋ก ํํํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๊ฒ์ผ๋ก ์ข์ ํ์ด๋ผ๊ณ ๋ณด์ฌ์ง๋ค. ํนํ๋ ๊ณ์ฐ ํจ์จ์ฑ์ด ๋๋ค๋๋ค.
for index,i in enumerate(range(5)):
print(index,i)
0 0
1 1
2 2
3 3
4 4