(Python 알고리즘) 데이터 구조(Queue) – 커리큘럼 설계

> 데이터 구조 사용 – 스택, 큐, 해시, 힙(큐 부분)

문제 : 커리큘럼 디자인

현수는 1년 과정의 수업 계획을 세워야 한다.
수업에 필수과목이 있습니다. 이러한 필수 과정은 필수이며 특정 순서로 진행됩니다.
전체 교과목이 A, B, C, D, E, F, G이고 필수과목이 CBA로 주어지면 필수과목은 C, B, A 순으로 수업계획을 세워야 한다. 여기서 적용되는 순서는 C과목을 이수한 후 B과목을, C과 B과목을 이수한 후에 A과목을 이수해야 한다는 것이다.
현수가 C, B, D, A, G, E로 수업안을 만들 때 적절한 디자인이지만
C, G, E, A, D, B 순서로 적는다면 잘못 설계된 수업 계획이 될 것입니다.
시간표는 이 순서대로 이전 기간이 완료되면 다음 기간이 시작되는 방식으로 해석됩니다. 강의 계획서의 각 과목은 무조건 완성된 것으로 간주됩니다.
필수과목의 순서를 고려하여 현수의 N수업안이 맞으면 “YES”, 틀리면 “NO”를 반환하는 프로그램을 작성하시오.

입력 설명
필수 과목의 순서는 첫 번째 줄에 나와 있습니다. 모든 테마는 영문 대문자로 되어 있습니다.
두 번째 줄은 N(1<=N<=10)을 지정합니다.
세 번째 행부터 N 클래스 설계가 지정됩니다.

(수업 디자인 길이는 30 이하입니다.) 동일한 주제를 여러 번 다루도록 수업 디자인을 만들 수 있습니다.

종료 설명
클래스 디자인이 좋은 경우 “YES”를 반환하고 잘못된 경우 “NO”를 반환합니다.

입력 예 1
CBA

CBDAGE FGCDAB CTSBDEA

출력 예 1
#1 예
#2 아니요
#3 예

입력 예 2
AFC
하나
AFFDCCFF

출력 예 2
#1 예

import sys
from collections import deque

form = input()
n = int(input())

for i in range(n):
    plan = input()
    dq = deque(form)
    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))

가리키다!

  • 인쇄하려면 print(“#%d NO” %(i+1))
  • for-else 문도 여기에서 사용됩니다!

원천

  • Infra: Python 알고리즘으로 문제 해결