๊ด€๋ฆฌ ๋ฉ”๋‰ด

๐‘†๐‘ข๐‘›๐‘ โ„Ž๐‘–๐‘›๐‘’ ๐‘Ž๐‘“๐‘ก๐‘’๐‘Ÿ ๐‘Ÿ๐‘Ž๐‘–๐‘›โœง

[Python] ๋ฐฑ์ค€ 1201 & ๋ฐฑ์ค€ 1158 ๋ณธ๋ฌธ

#๋ฐฑ์ค€ 1201

from collections import deque

n, m = map(int, input().split(" "))
targets = list(map(int, input().split(' ')))

dq = deque(range(1, n+1))

# 10 3 [1,2,3,4,5,6...]
# 2 9 5
cnt = 0
for i in targets:
    if dq[0] == i:
        dq.popleft()
        continue
    index = dq.index(i) #์ฐพ๊ณ ์ž ํ•˜๋Š” ๊ฐ’์˜ ์ธ๋ฑ์Šค ์œ„์น˜๊ฐ€ 9์ด๋ฉด
    if index <= len(dq)//2: #3 < 5
        dq.rotate(-index)
        cnt += index
    else:
        dq.rotate(len(dq)-index)
        cnt += len(dq)-index

    dq.popleft()
print(cnt)

 

#๋ฐฑ์ค€ 1158 ์š”์„ธํ‘ธ์Šค ๋ฌธ์ œ

from collections import deque
n, m = map(int, input().split(' '))
numbers= [i for i in range(1, n+1)]
dq = deque(numbers)
answer = []

while dq:
    dq.rotate(-(m-1))
    num = dq.popleft()
    answer.append(num)

print(f'<{", ".join(str(x) for x in answer)}>')

 

 ๐Ÿ“ Points

  • deque.append(item): item์„ ๋ฐํฌ์˜ ์˜ค๋ฅธ์ชฝ ๋์— ์‚ฝ์ž…ํ•œ๋‹ค.
  • deque.appendleft(item): item์„ ๋ฐํฌ์˜ ์™ผ์ชฝ ๋์— ์‚ฝ์ž…ํ•œ๋‹ค.
  • deque.pop(): ๋ฐํฌ์˜ ์˜ค๋ฅธ์ชฝ ๋ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋™์‹œ์— ๋ฐํฌ์—์„œ ์‚ญ์ œํ•œ๋‹ค.
  • deque.popleft(): ๋ฐํฌ์˜ ์™ผ์ชฝ ๋ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋™์‹œ์— ๋ฐํฌ์—์„œ ์‚ญ์ œํ•œ๋‹ค.
  • deque.remove(item): item์„ ๋ฐํฌ์—์„œ ์ฐพ์•„ ์‚ญ์ œํ•œ๋‹ค.
  • deque.index(x[, start[, stop]]): ํ์—์„œ x์˜ ์œ„์น˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • deque.rotate(k): ํ ์•ˆ์˜ ์›์†Œ๋ฅผ ์šฐ์ธก(๋ฐ˜์‹œ๊ณ„๋ฐฉํ–ฅ)์œผ๋กœ k๋งŒํผ ์ด๋™, k๊ฐ€ ์Œ์ˆ˜์ผ ๊ฒฝ์šฐ ์™ผ์ชฝ(์‹œ๊ณ„๋ฐฉํ–ฅ)์œผ๋กœ k๋งŒํผ ์ด๋™
  • print(f'<',', '.join(str(x) for x in answer),'>',sep="") : <> ๊ณผ ์ถœ๋ ฅ๊ฐ’์„ sep=""์„ ํ†ตํ•ด์„œ ๋นˆ์นธ์—†์ด ๋ถ™์ด๊ณ  ', '.join(str(x) for x in answer) ๋ฅผ ํ†ตํ•ด answer์žˆ๋Š” ์›์†Œ(x)๋“ค์„ ๋ฌธ์ž(str)๋กœ ๋งŒ๋“ค๊ณ  ๋„์–ด์“ฐ๊ธฐ์™€ ์ฝค๋งˆ๋ฅผ ๋ถ™์ธ๋‹ค.