[Python-CodingTest] 5-7. 교육과정설계 (큐)
교육과정설계
문제 정리
입력
CBA
3
CBDAGE
FGCDAB
CTSBDEA
처리 과정
- 수강과목 요소를 하나씩 돌면서…
- 해당 요소가 필수과목 큐에 포함되어 있는데 필수과목 큐에서
pop
한 요소와 다르다면 NO &break
- 2번에서
break
당하지 않았으며 필수과목 큐에 남은 요소가 없어야지 YES
출력
#1 YES
#2 NO
#3 YES
내 답
import sys
from collections import deque # deque라는 자료구조를 사용하기 위해 임포트
sys.stdin = open("./input/in7.txt", "rt")
required_Q=list(input()) # 문자열 하나하나를 리스트로 받는 방법
required_Q=deque(required_Q) # 필수과목 큐
n=int(input())
for i in range(n):
plan_Q=list(input())
plan_Q=deque(plan_Q) # 수강과목 큐
while True:
cur=plan_Q.popleft()
if any(cur==x for x in required_Q): # Q에서 pop 했을 때 필수과목인 경우만 관심 있음
if cur!=required_Q.popleft(): # 제일 첫번째 필수과목과 다르면 NO
print("#%d NO" %(i+1))
else: # 제일 첫번째 필수과목이면 YES
print("#%d YES" %(i+1))
break
+) 수강과목 큐를 다 돌았을 때 필수과목 큐에 요소가 남아있다면 NO 출력해야함 +) 하나의 수강과목 테스트 케이스 실행 후 매번 필수과목 큐를 채워야함
풀이
import sys
from collections import deque # deque라는 자료구조를 사용하기 위해 임포트
sys.stdin = open("./input/in7.txt", "rt")
required=input() # 필수과목 (스트링으로 받음)
n=int(input())
for i in range(n):
plan=input() # 수강과목 (스트링으로 받음)
required_Q=deque(required) # 🌟 매번 테스트케이스마다 수강과목을 읽고 필수과목 큐를 초기화
for x in plan: # 수강과목 하나하나를 접근
if x in required_Q: # 🌟 x가 필수과목이라면
if x!=required_Q.popleft():
print("#%d NO" %(i+1))
break
else: # 수강과목을 무사히 돌았다고 무조건 YES는 아님
if len(required_Q)==0:
print("#%d YES" %(i+1))
else: # 필수과목 큐에 요소 남아있으면 NO
print("#%d NO" %(i+1))
정리
- 스트링 변수도
deque
로 변경 가능 - 스트링 변수도
for x in str
을 통해 요소 하나하나 접근 가능 - 필수과목 큐에 요소가 남아있을 경우 등 예외상황 꼼꼼히!
if x in required_Q
: x가 큐에 포함되어 있는지 확인할 때in
!- 출력 형식 지정: ` print(“#%d YES” %(i+1))`
💛 개인 공부 기록용 블로그입니다. 👻