1. ๋ฌธ์ ์ค๋ช
- ์
๋ ฅ
- n : ์ฒ์ ํ์ ํ ๊ฐ์๋ฅผ ๋ํ๋ด๋ ์ ์
- k : ์ฒ์์ ์ ํ๋ ํ์ ์์น๋ฅผ ๋ํ๋ด๋ ์ ์
- ์ถ๋ ฅ
- ์ํํ ๋ช ๋ น์ด๋ค์ด ๋ด๊ธด ๋ฌธ์์ด ๋ฐฐ์ด cmd๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๋ชจ๋ ๋ช ๋ น์ด๋ฅผ ์ํํ ํ ํ์ ์ํ์ ์ฒ์ ์ฃผ์ด์ง ํ์ ์ํ๋ฅผ ๋น๊ตํ์ฌ ์ญ์ ๋์ง ์์ ํ์ O, ์ญ์ ๋ ํ์ X๋ก ํ์ํ์ฌ ๋ฌธ์์ด ํํ๋ก return
2. ์ฝ๋
solution1.py
class Node:
def __init__(self):
self.removed = False
self.prev = None
self.next = None
def solution(n, k, cmd):
nodeArr = [Node() for _ in range(n)]
for i in range(1, n):
nodeArr[i-1].next = nodeArr[i]
nodeArr[i].prev = nodeArr[i-1]
curr = nodeArr[k]
mystack = []
for str in cmd:
if str[0] == 'U':
x = int(str[2:])
for _ in range(x):
curr = curr.prev
elif str[0] == 'D':
x = int(str[2:])
for _ in range(x):
curr = curr.next
elif str[0] == 'C':
mystack.append(curr)
curr.removed = True
up = curr.prev
down = curr.next
if up:
up.next = down #์ฐ๊ฒฐ
if down:
down.prev = up#์ฐ๊ฒฐ
curr = down
else:#๋ง์ง๋ง ๊ฐ์ด๋ฉด
curr = up
else: #Z
node = mystack.pop()
node.removed = False
up = node.prev
down = node.next
if up:
up.next = node
if down:
down.prev = node
answer = ''
for i in range(n):
if nodeArr[i].removed: #True
answer+='X'
else:
answer+='O'
return answer
3. ํ๊ณ
- ์ฒ์์๋ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ํ๋ ค๊ณ ํ๋ค๋ณด๋ ๊ณ์ ๋งํ๋ค.
- ํ์ด๋ฅผ ๋ณด๋, ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ฅผ ํ์ฉํด ํ์๋ค.
- class๋ก Node ๊ฐ์ฒด๋ฅผ ์ ์ธํด์ ์ ํ์ ๋ณด๋ฅผ ์
๋ฐ์ดํธํ ์ ์๊ณ , ์ญ์ ํ ํ ํ์ฌ ์์น๋ฅผ ์
๋ฐ์ดํธํ๊ธฐ ํธํ๋ค.
- ์ญ์ ํ์๋ ํ์ฌ ์์น๊ฐ ์๋๋ก ๋ด๋ ค๊ฐ๋๋ฐ, ๋ง์ง๋ง ๋ ธ๋๊ฐ ์ญ์ ๋ ๋๋ ํ์ฌ์์น๋ฅผ ์๋ก ์ฌ๋ ค์ผํ๋ค.
- ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ฅผ ํ์ด์ฌ์์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ ๊ณ ์ฌ๋ฏธ์์๋ค.
- ๋ค์ ๋ฒ์๋ ํ์ฉํ ์ ์๋๋ก ๊ตฌํ์ฐ์ต์ ํด์ผ๊ฒ ๋ค.
4. ์ฐธ๊ณ
'Algorithm > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ํ๊ดด๋์ง ์์ ๊ฑด๋ฌผ (Python) (0) | 2022.02.22 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] k์ง์์์ ์์ ๊ฐ์ ๊ตฌํ๊ธฐ (Python) (0) | 2022.02.16 |
[ํ๋ก๊ทธ๋๋จธ์ค] n์ง์ ๊ฒ์ (Python) (0) | 2022.02.16 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์ฃผ์ฐจ ์๊ธ ๊ณ์ฐ (Python) (0) | 2022.02.13 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์คํ์ฑํ ๋ฐฉ (Python) (0) | 2022.02.12 |