-- 예전 기록/BOJ

[ BOJ ] 10769 : 행복한지 슬픈지 ( BRONZE 1 ) / C, Python

rejo 2023. 11. 14. 10:50

문제

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

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

입력

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

출력

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

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

풀이 과정

행복한 얼굴을 나타내는 :-) 문자와 슬픈 얼굴을 나타내는 :-( 개수를 카운팅해야 한다. ( : 문자를 찾았다면, 행복한 얼굴 문자인지 슬픈 얼굴 문자인지를 찾는 방식을 사용한다. )

카운팅한 개수를 바탕으로, none, unsure, happy, sad 중에서 조건에 맞게 출력한다.

 

C

#include <stdio.h>
#include <string.h>

char str[260];
int main(void) {
    gets(str);
    int happy = 0;
    int sad = 0;

    for (int i = 0; i < strlen(str) - 2; i++) {
        if (str[i] == ':' && str[i+1] == '-' && str[i+2] == ')') happy += 1;
        if (str[i] == ':' && str[i+1] == '-' && str[i+2] == '(') sad += 1;
    }

    if (happy == 0 && sad == 0) printf("none");
    else if (happy == sad) printf("unsure");
    else if (happy > sad) printf("happy");
    else printf("sad");
    return 0;
}

Python

import sys
input = sys.stdin.readline

string = input().rstrip()

happy_cnt = string.count(':-)')
sad_cnt = string.count(':-(')

if happy_cnt == 0 and sad_cnt == 0: print('none')
elif happy_cnt == sad_cnt: print('unsure')
elif happy_cnt > sad_cnt: print('happy')
else: print('sad')