본문 바로가기

알고리즘/백준 문제 풀이

[Python] 15904번 UCPC는 무엇의 약자일까?

728x90

https://www.acmicpc.net/problem/15904

 

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

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

www.acmicpc.net


 

22/09/14

 

 

이 문제 또한 문자열 문제이지만 스택으로 접근했다.

 

정확히 말하면 정수 카운팅에 가깝지만, 어쨌든 그것 또한 스택을 추상적으로 모델링한 것이므로 스택을 이용한 것에 가깝다고 볼 수 있다.


 

문제 접근 방식:

 

 

문제는 일부 문자열을 지워서 UCPC를 만들 수 있는가를 묻는 문제이다.

 

나는 문자열을 하나씩 반복하여 돌다가 맨 처음에 U를 만나면 stack을 +1 해주었다. 이후 stack이 1인 상태에서 C를 만나면 또 stack을 +1 해주었다. 이런 식으로 맨 마지막의 stack의 값이 4라면 UCPC를 만들 수 있는 것으로 보았다.

 

그렇지 않으면 UCPC를 만들 수 없는 것이다.


아래는 내가 위의 접근 방식과 같이 작성한 파이썬 코드이다. 더보기를 누르면 확인할 수 있다.

더보기
# 15904번 UCPC는 무엇의 약자일까?
# 스택
import sys
input = sys.stdin.readline

S = input().rstrip()
stack = 0
for char in S:
    if char == 'U' and stack == 0:
        stack += 1
    elif char == 'C' and stack == 1:
        stack += 1
    elif char == 'P' and stack == 2:
        stack += 1
    elif char == 'C' and stack == 3:
        stack += 1
        break

if stack == 4:
    print('I love UCPC')
else:
    print('I hate UCPC')

'알고리즘 > 백준 문제 풀이' 카테고리의 다른 글

[Python] 5637번 가장 긴 단어  (0) 2022.09.28
[Python] 16113번 시그널  (0) 2022.09.28
[Python] 17413번 단어 뒤집기 2  (0) 2022.09.28
[Python] 2684번 동전 게임  (0) 2022.09.27
[Python] 5525번 IOIOI  (0) 2022.09.27