백준 문제 링크: 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)
'ALGORITHM > 백준' 카테고리의 다른 글
[BOJ/PYTHON] 5052. 전화번호 목록 (0) | 2023.06.01 |
---|---|
[BOJ/PYTHON] 14425. 문자열 집합 (0) | 2023.06.01 |
[BOJ/PYTHON] 2866. 문자열 잘라내기 (0) | 2023.06.01 |
[BOJ/PYTHON] 8892. 팰린드롬 (0) | 2023.06.01 |
[BOJ/PYTHON] 19591. 독특한 계산기 (0) | 2023.06.01 |
댓글