https://www.acmicpc.net/problem/1158
[๋ฌธ์ ]
์์ธํธ์ค ๋ฌธ์ ๋ ๋ค์๊ณผ ๊ฐ๋ค.
1๋ฒ๋ถํฐ N๋ฒ๊น์ง N๋ช ์ ์ฌ๋์ด ์์ ์ด๋ฃจ๋ฉด์ ์์์๊ณ , ์์ ์ ์ K(≤ N)๊ฐ ์ฃผ์ด์ง๋ค. ์ด์ ์์๋๋ก K๋ฒ์งธ ์ฌ๋์ ์ ๊ฑฐํ๋ค. ํ ์ฌ๋์ด ์ ๊ฑฐ๋๋ฉด ๋จ์ ์ฌ๋๋ค๋ก ์ด๋ฃจ์ด์ง ์์ ๋ฐ๋ผ ์ด ๊ณผ์ ์ ๊ณ์ํด ๋๊ฐ๋ค. ์ด ๊ณผ์ ์ N๋ช ์ ์ฌ๋์ด ๋ชจ๋ ์ ๊ฑฐ๋ ๋๊น์ง ๊ณ์๋๋ค. ์์์ ์ฌ๋๋ค์ด ์ ๊ฑฐ๋๋ ์์๋ฅผ (N, K)-์์ธํธ์ค ์์ด์ด๋ผ๊ณ ํ๋ค. ์๋ฅผ ๋ค์ด (7, 3)-์์ธํธ์ค ์์ด์ <3, 6, 2, 7, 5, 1, 4>์ด๋ค.
N๊ณผ K๊ฐ ์ฃผ์ด์ง๋ฉด (N, K)-์์ธํธ์ค ์์ด์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
[์ ๋ ฅ]
์ฒซ์งธ ์ค์ N๊ณผ K๊ฐ ๋น ์นธ์ ์ฌ์ด์ ๋๊ณ ์์๋๋ก ์ฃผ์ด์ง๋ค. (1 ≤ K ≤ N ≤ 5,000)
[์ถ๋ ฅ]
์์ ์ ๊ฐ์ด ์์ธํธ์ค ์์ด์ ์ถ๋ ฅํ๋ค.
class Node:
def __init__(self, key = None):
self.key = key
self.next = self.prev = self
def __str__(self):
return str(self.key)
class DoubleLinkedList:
def __init__(self):
self.head = Node()
self.size = 0
def __len__(self):
return self.size
def splice(self, a, b, x):
if a == None or b == None or x == None: return
a.prev.next = b.next
b.next.prev = a.prev
x.next.prev = b
b.next = x.next
a.prev = x
x.next = a
def moveBefore(self, a, x):
self.splice(a, a, x.prev)
def insertBefore(self, x, key):
self.moveBefore(Node(key), x)
def pushBack(self, key):
self.insertBefore(self.head, key)
self.size += 1
def delete(self, x):
if x == None or x == self.head: return
x.prev.next, x.next.prev = x.next, x.prev
self.size -= 1
return x.key
def search(self, key):
v = self.head.next
while v != self.head:
if v.key == key: return v
v = v.next
return None
N,K = map(int, input().split())
L = DoubleLinkedList()
Answer = []
for i in range(1, N+1):
L.pushBack(i)
v = L.head
while L.__len__() != 0:
for i in range(1, K):
if v.key == L.head.key: v = v.next
x = L.search(v.key)
L.pushBack(L.delete(x))
v = v.next
if v.key == L.head.key: v = v.next
x = L.search(v.key)
L.delete(x)
Answer.append(v.key)
v = v.next
print("<", end="")
print(", ".join(str(v) for v in Answer), end="")
print(">")
ํ๋ฅผ ์ฌ์ฉํด์ ์ฝ๊ฒ ํ ์ ์์ง๋ง ์ํ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํด์ ํ์ด๋ดค๋ค!
๋ฐฑ์ค์์ python3๋ก ์ ์ถํ๋ฉด ์๊พธ ์๊ฐ์ด๊ณผ ์๋ฌ๊ฐ ๋ฐ์ํด์ ๋ ๋น ๋ฅธ pypy๋ก ์ ์ถํ๋๋ฐ ํต๊ณผ๋๋ค. ์ด๋ ๊ฒ ํด๋ ๋๋๊ฒ์ธ๊ฐ,,ใ ใ