๐๋ฌธ์ ์ค๋ช
๐๋ฌธ์ ์ ๊ทผ ๋ฐฉ์
์ฒซ ๋ฒ์งธ ์๋
์๋ฌด์๊ฐ ์์ด ์๋ํ๋ค๊ฐ ์๊ฐ ์ด๊ณผ๊ฐ ๋ด๋ค.
๋ฌธ์ ๋ฅผ ์ ๊ทผํ ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ์๋ค.
1. ์ฒซ ๋ฒ์งธ ์นด๋๋ฅผ ์ ๊ฑฐํ๋ค.
2. ๋ ๋ฒ์งธ ์นด๋๋ฅผ ๋งจ ๋ค๋ก ๋ณด๋ธ๋ค.
์ ๋ ๊ณผ์ ์ 1์ฅ์ด ๋จ์๋๊น์ง ์ํํ๋ฉด ๋๋ ๋ฌธ์ ๋ผ๊ณ ์๊ฐํ๋ค.
๋ฐ๋ผ์ ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ๊ณ ๋งจ ์์ ์นด๋๋ฅผ ์ญ์ ํ๊ณ ๋ค๋ก ๋ณด๋ด๋๋ก ๊ตฌํํ๋ค.
๋ฌธ์ ๊ฐ ์์๊ฑฐ๋ผ ์๊ฐํ๋ ์ด์ ๋ ๊ฐ์ง์ด๋ค.
1. 1์ค for๋ฌธ์ ์ฌ์ฉํ๋ค.
2. ์ต๋ ๊ฐ๋ ์๊ฐ 50๋ง์ฅ์ด๋ค.
์์ค์ฝ๋
# 2์ด ์ด๊ณผ - N 500000์ผ๋ก ๋์
์ 79์ด๊ฐ ๊ฑธ๋ ธ๋ค.
# ๋ณ๋ชฉ ์ง์ ์ ์ด๋์ง?
import sys
n = int(sys.stdin.readline().rstrip())
cards = [x for x in range(1,n+1)]
def solution(cards):
while len(cards) > 1:
cards.pop(0)
cards.append(cards.pop(0))
print(cards[0])
solution(cards)
๊ฐ๊ณผํ๋ ๋ถ๋ถ
ํด๋น ๋ก์ง์ด Queue์ฒ๋ผ ๋์ํ๋ค๋ ๊ฒ์ ์๊ณ ๋ ๋ฆฌ์คํธ๋ก ๊ตฌํํ๋ค.
๋ฐ๋ผ์ ๊ฐ์ ๋ฃ๊ณ ๋นผ๋ ๊ณผ์ ์์ ๊ต์ฅํ ์ฑ๋ฅ ์ ํ๊ฐ ์ผ์ด๋ฌ๋ค.
๋ฆฌ์คํธ์ ํ์ ์ฑ๋ฅ์ฐจ์ด๊ฐ ๋๋ ์ด์ ์ ๋ํด ๋ ๊น๊ฒ ๊ณต๋ถํด ๋ณผ ํ์์ฑ์ ๋๊ผ๋ค.
๐๋ฌธ์ ํ์ด
๋ค์ ํ๋ก ๊ตฌํํ๋ ๋งค์ฐ ์ ๋์ํ๋ค.
import sys
from collections import deque
n = int(sys.stdin.readline().rstrip())
cards = [x for x in range(1,n+1)]
cards = deque(cards)
def solution(cards):
while len(cards) > 1:
cards.popleft()
cards.append(cards.popleft())
print(cards[0])
solution(cards)
๐์ฑ๋ฅ ์ฐจ์ด
2021-03-12
๋ฆฌ์คํธ๋ก ํ๋ฅผ ๊ตฌํ ์ ์ฑ๋ฅ ์ฐจ์ด๊ฐ ๋๋ ์ด์ ์ ๋ํด ์ถ๊ฐ์ ์ผ๋ก ๊ณต๋ถํด๋ณด์์ต๋๋ค.
Queue
ํ๋ ์ํ๊ด ๋งคํ์์ ์ค์ ์๋ ๊ตฌ์กฐ์ ๊ฐ์ต๋๋ค.
๋จผ์ ์ค์ ์ ์ฌ๋์ด ์ฐ์ ์ ์ผ๋ก ํ๋ฅผ ์ด ์ ์๋ ๊ฒ์ด์ฃ .
์๋ก์ด ์ฌ๋์ด ๋ค์ด์ค๋ฉด ๋งจ ๋ค์ ์ค์ ์์ผ ํฉ๋๋ค.
์ด๊ฒ์ ํ์ด์ฌ์์๋ ๋ฆฌ์คํธ๋ก ๊ตฌํ์ด ๊ฐ๋ฅํฉ๋๋ค.
list ํจ์์ append()์ pop(0)๋ฅผ ์ฌ์ฉํ๋ฉด ํ์ฒ๋ผ ๋์ํ๋๋ก ๋ง๋ค ์ ์์ต๋๋ค.
List ๋จ์
ํ์ง๋ง ํ์ด์ฌ์์๋ Queue ์๋ฃ๊ตฌ์กฐ๋ฅผ ๋ฐ๋ก ์ ๊ณต์ ํ๊ณ ์์ต๋๋ค.
๋ํ collections ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ deque ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ ๊ณตํฉ๋๋ค.
์ด์ ๊ฐ ๋ฌด์์ผ๊น์?
List์ ๊ฒฝ์ฐ ๋งจ ๋ค์์ appendํ๊ณ popํ ๋๋ ์๊ฐ ๋ณต์ก๋๊ฐ O(1)์ด ๋ญ๋๋ค.
ํ์ง๋ง ๋งจ ์์์ ๋ฃ๊ณ ๋นผ๊ณ ํ ๊ฒฝ์ฐ O(N)์ผ๋ก ์ฆ๊ฐํ๊ฒ ๋ฉ๋๋ค.
๊ทธ ์ด์ ๋ ํ๋๋ฅผ ์ ๊ฑฐํ ๊ฒฝ์ฐ ๋น์ด์๋ ๋งํผ ์ด๋์ ์์ผ์ค์ผํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
Deque
Deque์ ๊ฒฝ์ฐ append() ํจ์์ popleft() ํจ์๋ก ์ฌ์ฉํ์ฌ ํ์ฒ๋ผ ๋์ํ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
'์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค 10816 ์นด๋๋๋ฒ2 ๋ฌธ์ ํ์ด (0) | 2021.03.21 |
---|---|
๋ฐฑ์ค 10814 ๋ฌธ์ ํ์ด (0) | 2021.03.20 |
๋ฐฑ์ค 1259๋ฒ : ํฐ๋ฆฐ๋๋กฌ์ด๋? (0) | 2021.03.09 |
๋ฐฑ์ค 1920๋ฒ[์์ฐพ๊ธฐ] ๋ฌธ์ ํ์ด (0) | 2021.03.07 |
๋ฐฑ์ค 1181๋ฒ[๋จ์ด ์ ๋ ฌ] ๋ฌธ์ ํ์ด (0) | 2021.03.06 |