반응형
문제
승엽이는 자신의 감정을 표현하기 위해서 종종 문자 메시지에 이모티콘을 넣어 보내곤 한다. 승엽이가 보내는 이모티콘은 세 개의 문자가 붙어있는 구조로 이루어져 있으며, 행복한 얼굴을 나타내는 :-) 와 슬픈 얼굴을 나타내는 :-( 가 있다.
혜성이는 승엽이의 이모티콘을 귀여운 척이라고 생각해 매우 싫어하므로, 승엽이의 문자가 오면 전체적인 분위기만 판단해서 알려주는 프로그램을 작성하고 싶다.
입력
첫 줄에 최소 1개에서 최대 255개의 문자들이 입력된다.
출력
출력은 다음 규칙에 따라 정해진다.
- 어떤 이모티콘도 포함되어 있지 않으면, none 을 출력한다.
- 행복한 이모티콘과 슬픈 이모티콘의 수가 동일하게 포함되어 있으면, unsure 를 출력한다.
- 행복한 이모티콘이 슬픈 이모티콘보다 많이 포함되어 있으면, happy 를 출력한다.
- 슬픈 이모티콘이 행복한 이모티콘보다 많이 포함되어 있으면, sad 를 출력한다.
출처
Olympiad > Canadian Computing Competition & Olympiad > 2015 > CCC 2015 Junior Division 2번
- 문제를 번역한 사람: ddaafftt
흐음.. 왜 이렇게 많이 틀렸을까...?
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(){
char a[256];
gets(a);
char stack[256];
int len = strlen(a);
int h = -1, s = -1;
int top = 0;
for(int i = 0 ; i < len ; i++){
if(top == 0){
if(a[i] == ':')
stack[top++] = a[i];
}
if(top == 1){
if(strncmp(stack,":",1)!=0)
top = 0;
else if(a[i] == '-')
stack[top++] = a[i];
}
if(top == 2){
if(strncmp(stack,":-",2)!=0)
top = 0;
else if(a[i] == ')' || a[i] == '(')
stack[top++] = a[i];
}
if(top == 3){
if(strncmp(stack,":-)",3)==0){
h++;
top = 0;
}
else if(strncmp(stack,":-(",3)==0){
s++;
top = 0;
}else
top = 0;
}
}
if(h == -1 && s == -1)
printf("none\n");
else if(h > s){
printf("happy\n");
}
else if(h < s){
printf("sad\n");
}
else if(h == s)
printf("unsure\n");
}
조건이 쪼끔 까다로웠던 모양이다.
5년만에 C언어를 보니.. 왜이렇게 새로운지 모르겠다.
strncmp() 라든지 gets()라든지.. 잊고 있었던 오래된 친구를 보는 듯한 기분이랄까..
옛날에는 자주 썼는데
현업에서는 Unity 를 쓰고 있는 내가 저 함수들을 쓰는 일은 거의 없는 것 같다.
반응형