보안을 그리다, 훈이

[Baekjoon/Python3] 15904번 UCPC는 무엇의 약자일까? 본문

Programming/Python & Data Structures

[Baekjoon/Python3] 15904번 UCPC는 무엇의 약자일까?

HooNeee 2020. 12. 8. 17:36

[Baekjoon/Python3] 15904번 UCPC는 무엇의 약자일까?

 

www.acmicpc.net/problem/15904

 

15904번: UCPC는 무엇의 약자일까?

첫 번째 줄에 알파벳 대소문자, 공백으로 구성된 문자열이 주어진다. 문자열의 길이는 최대 1,000자이다. 문자열의 맨 앞과 맨 끝에 공백이 있는 경우는 없고, 공백이 연속해서 2번 이상 주어지는

www.acmicpc.net

 

 

처음 문제를 읽었을 때, 문자열의 대문자만 필터링 한 값이 'UCPC'인지, 아닌지를 구하는 문제로 인식했고

아래 코드를 제출했다.

 

s = input()
u = ''
alp = [chr(i) for i in range(65, 91)]
for i in s:
    if i in alp:
        u += i
if u == 'UCPC':
    print('I love UCPC')
else:
    print('I hate UCPC')

 

'틀렸습니다'란다.

 

문제를 아무리 읽어봐도 문제의 의도에 코드가 부합한다고 생각되어 백준에 질문해보았다.

 

 

음.. 'UCPCC'가 반례라고 한다. (wjsqjawns님 감사합니다ㅜㅜ)

다시 문제를 읽어봐도.. 나만 이해가 안되는건지 모르겠다.

 

어쨌든 반례도 알았으니 문자열 슬라이싱 기법으로 코드를 작성했다.

'U', 'C', 'P', 'C' 만 순서대로 입력되면 그 외 어떠한 문자가 입력되어도 'I love UCPC'가 출력되도록 하였다.

 

다음 코드가 최종 코드이다.

 

s = input()
alp = ['U', 'C', 'P', 'C']
i = 0
for a in alp:
    if a in s:
        i += 1
        s = s[s.index(a) + 1:]
    else:
        print('I hate UCPC')
        break
if i == 4:
    print('I love UCPC')
Comments