본문 바로가기
ALGORITHM/백준

[BOJ/PYTHON] 15904. UCPC는 무엇의 약자일까?

by 뭉망뭉 2023. 6. 1.

백준 문제 링크: https://www.acmicpc.net/problem/15904

문제 요약

축약해서 UCPC가 되면 I love UCPC 출력, 안 되면 I hate UCPC 출력

핵심 아이디어

대문자만 뽑았을 때 무조건 UCPC만 나와야 하는 건 아니다. 축약해서 UCPCC가 되는 경우도 UCPC로 축약 가능하기 때문에 대문자만 이어붙였을 때 ‘UCPC’와 일치하는지로 풀면 안 된다. I love UCPC도 대문자만 보면 IUCPC이지만 UCPC로 축약 가능하다.

결국, 대문자만 봤을 때 뭐가 있든 UCPC가 순서대로 존재하기만 하면 된다.

인덱스 변수를 지정해주고 U, C, P, C가 순서대로 들어있는 UCPC 리스트에서 UCPC[index]가 이번에 보는 대문자와 동일하면 리스트에 넣어주는 방식으로 구현했다.

풀이

# silver5-15904. UCPC는 무엇의 약자일까?

import sys
input = sys.stdin.readline

string = list(input().rstrip())
upper_list = []
UCPC = ["U", "C", "P", "C"]
index = 0

for spell in string:
    if spell.isupper() and spell == UCPC[index]: # 중간에 다른 게 껴도 UCPC가 순서대로 들어오기만 하면 됨. 
        upper_list.append(spell)
        index += 1
        if index == 4: break # 원하는 결과 다 얻음 (없으면 런타임 인덱스 에러 발생)
if upper_list == UCPC: print("I love UCPC")
else: print("I hate UCPC")

Trouble Shooting

대문자만 뽑아 봤을 때 == “UCPC”인지로 핸들링해서 틀렸었다.

인덱스를 1씩 올려주는 방식으로 구현한 후 인덱스 에러가 나서 index가 4가 됐을 경우 끝내주는 로직을 넣었다.

실행 시간

메모리 31256KB, 시간 40ms (python3)

댓글