์ ์ฒด์ฝ๋
import sys
from collections import deque
# ์
๋ ฅ ๊ฐ
# CBA
# 3
# CBDAGE
# FGCDAB
# CTSBDEA
sys.stdin=open("C:\\input.txt",'rt')
need = input()
n = int(input())
for i in range(n):
plan = input()
dq=deque(need)
for x in plan:
if x in dq:
if x != dq.popleft():
print("#%d NO" %(i+1))
break
else:
if len(dq) == 0:
print("#%d YES" %(i+1))
else:
print("#%d NO" %(i+1))
1๏ธโฃ ์ ๋ ฅ ์ฒ๋ฆฌ
import sys from collections import deque sys.stdin = open("C:\\input.txt", 'rt') # ํ์ผ์์ ์
๋ ฅ์ ์ฝ์ด์ค๋ ์ฝ๋ (์ค์ ์คํ ์ ํ์ ์์ ์๋ ์์)
- sys.stdin=open("C:\\input.txt",'rt')๋ ํ์ผ์์ ์ ๋ ฅ์ ๋ฐ๋๋ก ์ค์ ํ๋ ์ฝ๋์ธ๋ฐ, ์ด๋ ์จ๋ผ์ธ ์ฝ๋ฉ ํ ์คํธ์์๋ ํ์ํ์ง ์์ ์๋ ์์ด์. ๋ณดํต์ input()์ผ๋ก ์ ๋ ฅ์ ๋ฐ์ต๋๋ค.
- from collections import deque: deque(๋ฑ)๋ ๋ฆฌ์คํธ์ ๋น์ทํ์ง๋ง, ์์ชฝ์์ ๋น ๋ฅด๊ฒ ์ฝ์ /์ญ์ ํ ์ ์๋ ์๋ฃ๊ตฌ์กฐ์ ๋๋ค. ์ด ๋ฌธ์ ์์๋ ์์๊ฐ ์ค์ํ ํ(Queue)์ฒ๋ผ ํ์ฉ๋ฉ๋๋ค.
2๏ธโฃ ํ์ํ ๋ณ์ ์ด๊ธฐํ
need = input() # ํ์ ๊ณผ๋ชฉ ์์๋ฅผ ๋ํ๋ด๋ ๋ฌธ์์ด
n = int(input()) # ๊ฒ์ฌํ ๊ต์ก ๊ณผ์ ์
- need: ํ์์ ์ผ๋ก ํฌํจํด์ผ ํ๋ ๊ณผ๋ชฉ์ ์์ (์์ ์์๋ "CBA")
- n: ์ฃผ์ด์ง ๊ณํ์ ๊ฐ์
3๏ธโฃ ๊ฐ ๊ต์ก ๊ณผ์ ๊ณํ์ ๊ฒ์ฌ
for i in range(n): plan = input() # ๊ต์ก ๊ณผ์ ๊ณํ
dq = deque(need) # ํ์ ๊ณผ๋ชฉ ์์๋ฅผ ํ(๋ฑ)๋ก ๋ณํ
- ์ฃผ์ด์ง ๊ต์ก ๊ณผ์ plan์ด need์ ์์๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ํฌํจํ๋์ง ํ์ธํฉ๋๋ค.
- deque(need): ํ์ ๊ณผ๋ชฉ์ ๋ฑ(deque)๋ก ๋ณํํ์ฌ, ๋งจ ์์์ ํ๋์ฉ ๋น๊ตํ๋ฉฐ ์ฒ๋ฆฌํ ์์ ์ ๋๋ค.
4๏ธโฃ ๊ต์ก ๊ณผ์ ๊ฒ์ฆ
for x in plan: # ๊ต์ก ๊ณผ์ ์ ๊ฐ ๋ฌธ์(๊ณผ๋ชฉ)๋ฅผ ํ๋์ฉ ํ์ธ
if x in dq: # ํ์ฌ ๋ฌธ์๊ฐ ํ์ ๊ณผ๋ชฉ ๋ชฉ๋ก์ ์๋์ง ํ์ธ
if x != dq.popleft(): # ์์๊ฐ ๋ง์ง ์์ผ๋ฉด ์คํจ
print("#%d NO" % (i+1)) break
- plan์ ํ ๊ธ์์ฉ ํ์ธํ๋ฉด์ need์ ์์๋ฅผ ๋ง์กฑํ๋์ง ์ฒดํฌํฉ๋๋ค.
- if x in dq: ํ์ฌ ๋ฌธ์๊ฐ need์ ์ผ๋ถ๋ผ๋ฉด, ์์๋ฅผ ์ฒดํฌํด์ผ ํฉ๋๋ค.
- if x != dq.popleft():
- dq.popleft()๋ ๋ฑ์ ๋งจ ์ ๋ฌธ์๋ฅผ ๊บผ๋ด๋ ํจ์์ ๋๋ค.
- x๊ฐ dq์ ๋งจ ์ ๋ฌธ์๊ฐ ์๋๋ผ๋ฉด ์์๋ฅผ ์ด๊ธด ๊ฒ์ด๋ฏ๋ก NO๋ฅผ ์ถ๋ ฅํ๊ณ break๋ก ์ข ๋ฃํฉ๋๋ค.
5๏ธโฃ ์ฌ๋ฐ๋ฅด๊ฒ ์์๋ฅผ ๋ฐ๋๋์ง ์ต์ข ํ๋จ
else: # break ์์ด for๋ฌธ์ ๋๊น์ง ์คํํ ๊ฒฝ์ฐ
if len(dq) == 0: # ๋ชจ๋ ํ์ ๊ณผ๋ชฉ์ ๋ค ๋ฐฐ์ด ๊ฒฝ์ฐ
print("#%d YES" % (i+1))
else: # ์์ง ๋จ์ ํ์ ๊ณผ๋ชฉ์ด ์๋ค๋ฉด ์คํจ
print("#%d NO" % (i+1))
- for ๋ฃจํ๊ฐ break ์์ด ๋๊น์ง ์คํ๋๋ฉด else ๋ธ๋ก์ด ์คํ๋ฉ๋๋ค.
- len(dq) == 0์ด๋ฉด ๋ชจ๋ ํ์ ๊ณผ๋ชฉ์ ์ฌ๋ฐ๋ฅธ ์์๋ก ํ์ตํ ๊ฒฝ์ฐ์ด๋ฏ๋ก YES ์ถ๋ ฅ.
- dq์ ๋จ์ ์๋ ๋ฌธ์๊ฐ ์๋ค๋ฉด ํ์ ๊ณผ๋ชฉ์ ๋ค ๋ฃ์ง ์์ ๊ฒ์ด๋ฏ๋ก NO ์ถ๋ ฅ.
6๏ธโฃ ์์ ์คํ
์ ๋ ฅ
CBA 3
CBDAGE
FGCDAB
CTSBDEA
์คํ ๊ณผ์
1๏ธโฃ ์ฒซ ๋ฒ์งธ ๊ณผ์ : "CBDAGE"
ํ์ ๊ณผ์ : CBA
๊ณผ์ ๊ฒํ :
- C → B → D (์์์ B ๋ค์์ D๊ฐ ๋์์ ํ๋ฆผ) → #1 NO
2๏ธโฃ ๋ ๋ฒ์งธ ๊ณผ์ : "FGCDAB"
ํ์ ๊ณผ์ : CBA
๊ณผ์ ๊ฒํ :
- C → B → A (์์๋๋ก ์ ๋์ด) → #2 YES
3๏ธโฃ ์ธ ๋ฒ์งธ ๊ณผ์ : "CTSBDEA"
ํ์ ๊ณผ์ : CBA
๊ณผ์ ๊ฒํ :
- C → B → D (์์ ํ๋ฆผ) → #3 NO
์ถ๋ ฅ ๊ฒฐ๊ณผ
#1 NO
#2 YES
#3 NO
7๏ธโฃ ์ ๋ฆฌ
- deque๋ฅผ ์ด์ฉํด ํ์ ๊ณผ๋ชฉ ์์๋ฅผ ํ์ฒ๋ผ ํ์ฉํ์ฌ ์ฐจ๋ก๋๋ก ๊ฒ์ฌ.
- popleft()๋ฅผ ์ฌ์ฉํด ์ ํํ ์์๋ฅผ ์ฒดํฌ.
- for-else ๊ตฌ๋ฌธ์ ํ์ฉํ์ฌ break ์์ด ๋๊น์ง ์งํ๋ ๊ฒฝ์ฐ๋ง YES ์ถ๋ ฅ.
'์๊ณ ๋ฆฌ์ฆ ๐ก' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
9. ์๋๊ทธ๋จ(๋์ ๋๋ฆฌ ํด์ฌ) _ ํ์ด์ฌ (0) | 2025.02.20 |
---|---|
8.๋จ์ด์ฐพ๊ธฐ(ํด์ฌ)_ํ์ด์ฌ (0) | 2025.02.18 |
[์๊ณ ๋ฆฌ์ฆ ๊ฐ๋ ์ ๋ฆฌ] max() ํจ์ ์ ๋ฆฌ_ํ์ด์ฌ (0) | 2025.02.17 |
6. ์๊ธ์ค(ํ)_ํ์ด์ฌ (0) | 2025.02.17 |
5. ๊ณต์ฃผ๊ตฌํ๊ธฐ(ํ)_ํ์ด์ฌ (0) | 2025.02.17 |