문제 보기

아이디어

문자열 s를 이루는 모든 문자 c에 대해 문자열 t에서 c를 찾는다.
단, c2보다 이전에 등장한 c1의 문자열 t에서의 index값은 c2의 문자열 t에서의 index값보다 작아야한다.

오답

입력이 끝날때까지 출력하는 문제 유형
출력이 완료되고 입력값이 없을 때(enter만 입력) 프로그램이 종료되도록 구현해야한다.
더 이상 입력이 없는데 input으로 입력을 기다리는 경우 EOFError가 발생한다.

import sys
input = sys.stdin.readline

def sol():
    s,t = input().split()
    if len(s) > len(t):
        return False
    else:
        idx = -1
        for i in range(len(s)):
            if len(t) == 0:
                return False
            idx = t.find(s[i])
            if idx<0:
                return False
            t = t[idx+1:]
    return True


while True:
    if sol():
        print("Yes")
    else:
        print("No")

정답 코드

try except 를 사용해 EOFError를 처리해주면 된다.

import sys
input = sys.stdin.readline

def sol():
    s,t = input().split()
    if len(s) > len(t):
        return False
    else:
        idx = -1
        for i in range(len(s)):
            if len(t) == 0:
                return False
            idx = t.find(s[i])
            if idx<0:
                return False
            t = t[idx+1:]
    return True


while True:
    try:
        if sol():
            print("Yes")
        else:
            print("No")
    except:
        break

reference

Categories:

Updated:

Comments