"University Computer Programming Contest"에서 공백과 소문자를 모두 지워 "UCPC"로 만들 수 있음
문자열을 비교할 때는대소문자를 구분해 정확히 비교
예를 들어 "UCPC"와 "UCpC"는 다른 문자열
따라서 "University Computer programming Contest"를 "UCPC"로 축약할 수 있는 방법은 없음
입력
첫 번째 줄에 알파벳 대소문자, 공백으로 구성된 문자열이 주어짐
문자열의 길이는 최대 1,000자
문자열의 맨 앞과 맨 끝에 공백이 있는 경우는 없고, 공백이 연속해서 2번 이상 주어지는 경우도 없음
출력
첫 번째 줄에 입력으로주어진 문자열을 적절히 축약해 "UCPC"로 만들 수 있으면 "I love UCPC"를 출력하고, 만들 수 없으면 "I hate UCPC"를 출력
시간 제한: 1초
메모리 제한: 512 MB
"""
입출력 예시)
(예제 입력 1)
Union of Computer Programming Contest club contest
-> I love UCPC
(예제 입력 2)
University Computer Programming
-> I hate UCPC
"""
## 의사코드 ##
# 주어진 문자열에서 대문자만 추출
# import re
# re.findall('[A-Z]', string)
# 대문자만 추출한 문자열이 'UCPC'와 동일한지 확인
첫 번째 시도
import re
string = input()
# 주어진 문자열에서 대문자만 추출한 줄임말
short = ''.join(re.findall('[A-Z]', string))
# 대문자만 추출한 문자열이 'UCPC'와 동일한지 확인
if short == 'UCPC':
print('I love UCPC')
else:
print('I hate UCPC')
-> 틀림
두 번째 시도
string = input()
short = '' # 줄임말
for s in string:
# 현재 문자가 'UCPC'에 해당하면 줄임말에 추가
if s in 'UCPC':
short += s
# 줄임말이 'UCPC'와 동일한지 확인
if short == 'UCPC':
print('I love UCPC')
else:
print('I hate UCPC')
-> 틀림
대문자만 남겼을 때 'UCPC'가 되는지 보는 게 아니고 줄임말이 'UCPC'와 정확히 일치하는지를 보는 것도 아니여서 틀림
문자열에서 임의의 문자들을 제거해도 'UCPC'가 되는지를 확인해야 함
아래의 예시들도 모두 'I love UCPC'가 정답
'UUCPC'
'UCASDFPC'
'ASDFUCPC'
'UCPCASDF'
'AUBCCPDC'
통과한 코드
import re
string = input()
# 주어진 문자열에서 대문자만 추출한 줄임말
short = ''.join(re.findall('[A-Z]', string))
ucpc = 'UCPC'
idx = 0 # 인덱스
for s in short:
# 현재 문자가 'UCPC'의 idx번째 문자와 같다면 인덱스+1
if s == ucpc[idx]:
idx += 1
# 인덱스가 4이면 'UCPC'를 모두 찾은 것이므로 'I love UCPC' 출력
if idx == 4:
print('I love UCPC')
break
else:
print('I hate UCPC')
-> 인덱스를 활용해서 현재 문자가 'UCPC'의 인덱스 번째 문자와 같으면 인덱스에 1을 더하는 형식으로 확인
과정 확인
string = 'ASDFUCPC'
"""
대문자만 추출한 줄임말: ASDFUCPC
현재 문자: A, 현재 인덱스: 0
현재 문자: S, 현재 인덱스: 0
현재 문자: D, 현재 인덱스: 0
현재 문자: F, 현재 인덱스: 0
현재 문자: U, 현재 인덱스: 0
현재 문자가 "UCPC"의 idx번째 문자와 같으므로 인덱스+1
--------------------------------------------------------------------------------
현재 문자: C, 현재 인덱스: 1
현재 문자가 "UCPC"의 idx번째 문자와 같으므로 인덱스+1
--------------------------------------------------------------------------------
현재 문자: P, 현재 인덱스: 2
현재 문자가 "UCPC"의 idx번째 문자와 같으므로 인덱스+1
--------------------------------------------------------------------------------
현재 문자: C, 현재 인덱스: 3
현재 문자가 "UCPC"의 idx번째 문자와 같으므로 인덱스+1
--------------------------------------------------------------------------------
I love UCPC
"""