본문 바로가기

Coding Test

[Section05] Python 알고리즘 문제풀이 07~08

Q7. 교육과정 설계(큐) : 제시된 필수과목의 수강 순서대로 수업계획이 되었는지 확인

입력 : 

필수과목

N(1<=N<=10)

N개의 수업계획

출력 : N개의 YES 또는 NO 여부

 

[내가 쓴 코드]

from collections import deque

required = list(input())
n = int(input())
course = list()

for i in range(n) :
    plan = deque(list(input()))
    
    while plan :
        pivot = plan.popleft()
        for x in required :
            if pivot == x and pivot not in course : 
                course.append(pivot)
    
    if (course) == (required) :
        result = "YES"
    else :
        result = "NO"
    
    course.clear()
    
    print("#%d %s" % (i+1, result))

 

[풀이코드]

from collections import deque

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))

큐를 사용하는 것이 좀 힘들었음 굳이 왜 사용하는지 어디에 사용해야 효율적인건지 고민이 많았고 그냥 아무곳이다 가져다 붙여넣었음,,,

 


Q7. 단어 찾기(해시) : 주어진 단어 중에서 시에서 사용되지 않은 단어 출력

입력 : 

N(3<=N<=100)

N개의 단어

N-1개의 시에 쓰이진 단어

출력 : 쓰이지 않은 단어

 

[내가 쓴 코드]

n = int(input())
dictionary = dict()

for i in range(n) :
    dictionary[input()] = False
    
for i in range(n-1) :
    dictionary[input()] = True
    
print(*[k for k, v in dictionary.items() if v == False])

 

[풀이 코드]

n = int(input())
p = dict()

for i in range(n) :
    word = input()
    p[word] = 1
for i in range(n-1) :
    word = input()
    p[word] = 0
for key, val in p.items() :
    if val == 1 :
        print(key)
        break

 

헐 코드 똑같음 왕 뿌듯하다