본문 바로가기

코딩테스트/Baekjoon

(Python 3) 백준 알고리즘 10769 행복한지 슬픈지

문제 10769 행복한지 슬픈지  


문제


승엽이는 자신의 감정을 표현하기 위해서 종종 문자 메시지에 이모티콘을 넣어 보내곤 한다. 승엽이가 보내는 이모티콘은 세 개의 문자가 붙어있는 구조로 이루어져 있으며, 행복한 얼굴을 나타내는 :-) 와 슬픈 얼굴을 나타내는 :-( 가 있다.

혜성이는 승엽이의 이모티콘을 귀여운 척이라고 생각해 매우 싫어하므로, 승엽이의 문자가 오면 전체적인 분위기만 판단해서 알려주는 프로그램을 작성하고 싶다.



입력

첫 줄에 최소 1개에서 최대 255개의 문자들이 입력된다.


출력


출력은 다음 규칙에 따라 정해진다.

  • 어떤 이모티콘도 포함되어 있지 않으면, none 을 출력한다.
  • 행복한 이모티콘과 슬픈 이모티콘의 수가 동일하게 포함되어 있으면, unsure 를 출력한다.
  • 행복한 이모티콘이 슬픈 이모티콘보다 많이 포함되어 있으면, happy 를 출력한다.
  • 슬픈 이모티콘이 행복한 이모티콘보다 많이 포함되어 있으면, sad 를 출력한다.


예제 입력 1

How are you :-) doing :-( today :-)?
cs


예제 출력 1

happy
cs


예제 입력 2

:)
cs

예제 출력 2

none
cs


예제 입력 3

This:-(is str:-(:-(ange te:-)xt.
cs


예제 출력 3

sad
cs


코드


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import sys
message = str(sys.stdin.readline())
happy = 0
sad = 0
emoji = []
message = list(message)
 
for e in range(len(message)):
    if message[e] == ':':
        if message[e+2== ')':
            happy += 1
        elif message[e+2== '(':
            sad += 1
        else:
            continue
 
def compare(h, s):
    if h ==0 and s ==0:
        return 'none'
    elif h == s:
        return 'unsure'
    elif h > s:
        return 'happy'
    else:
        return 'sad'
    
print(compare(happy, sad))   
cs



코드 설명

1. 메세지를 리스트로 형변환한다.

2. 확인할 이모티콘은 ':-)', ':-(' 두 가지 형태로 ':'이 나오면 두칸 뒤는 ')' 또는 '('가 나와야함을 이용해 if문을 활용해 이모티콘을 찾아주며, ':-)'인 경우는 happy에 1을 더하고 ':-('인 경우에는 sad에 1을 더해준다.

3. happy와 sad의 수를 비교하면서 'none', 'unsure', 'happy', 'sad'를 출력한다.



알고리즘 분류

  • 문자열 처리


반응형