문제
올해 인천대에서는 코로나19로 인해 온라인 축제를 개최했다. 축제 내용 중에는 퀴즈쇼가 있는데, 초청 연예인이 채팅을 보고 정답을 맞힌 사람의 닉네임을 읽어 1명에게 상품을 주는 이벤트이다.
축제를 즐기던 철이는 퀴즈쇼가 끝난 뒤 커뮤니티에 당첨자보다 정답을 빨리 쳤다며 아쉬워하는 사람들이 나타난 것을 보았다. 채팅 기록을 갖고 있는 철이는 그런 아쉬운 사람들이 몇 명이나 있는지 알고 싶어졌다. 채팅 기록은 여러 줄로 이루어져 있는데, 각 줄에는 채팅을 친 사람의 닉네임과 채팅 내용이 담겨있다.
채팅 기록과 당첨자가 주어졌을 때 아쉬운 사람의 수를 구해보자. 아쉬운 사람은 당첨자보다 빨리 정답을 외친 사람이다.
입력
첫 번째 줄에 채팅 개수 N과 정답자의 닉네임 S가 공백으로 구분되어 주어진다. (2 ≤ N ≤ 1,000)
두 번째 줄부터 차례로 N개의 채팅 기록이 시간순으로 주어진다. 채팅 기록은 닉네임과 채팅 내용이 공백으로 구분되어 주어진다. 각 닉네임과 채팅 내용은 길이가 1이상 10이하이며 알파벳 소문자로만 이루어져 있다.
한 사람이 두 번 이상 채팅을 친 경우는 주어지지 않으며, 정답자의 닉네임 S는 반드시 채팅 기록에 등장한다.
출력
첫 번째 줄에 아쉬운 사람의 명수를 출력한다.
예제 입력 1
3 duck oridya hello orihehe hi duck hi |
예제 출력 1
1 |
예제 입력 2
8 orihehe orihehe duck skynet duck rdd duck vega duck reversing duck dongbin duck kimyh duck hunni duck |
예제 출력 2
0 |
실제로는 아쉬운 사람이 없을 수도 있다.
예제 입력 3
8 orihehe hunni duck skynet duck rdd duck vega duck reversing duck dongbin duck kimyh duck orihehe duck |
예제 출력 3
7 |
예제 입력 4
8 orihehe hunni dduck skynet dduck rdd dduck vega dduck reversing dduck dongbin dduck kimyh dduck orihehe duck |
예제 출력 4
0 |
더보기
Solution
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(void)
{
int N, count=0, correct;
char ans[11]={'\0', }, S[11]={'\0', }, **chat=NULL, name[11]={'\0', };
scanf("%d %s", &N, S);
chat=(char **)malloc(N*sizeof(char *));
for(int n=0;n<N;n++)
chat[n]=(char *)calloc(11,sizeof(char));
for(int n=0;n<N;n++)
{
scanf("%s %s", name, chat[n]);
if(strcmp(S,name)==0)
{
correct=n;
strcpy(ans,chat[n]);
break;
}
}
for(int n=0;n<correct;n++)
count+=strcmp(ans,chat[n])==0;
printf("%d\n", count);
for(int n=0;n<N;n++)
free(chat[n]);
free(chat);
return 0;
}
728x90
'백준 알고리즘' 카테고리의 다른 글
<백준 알고리즘> 20365번: 블로그2 (0) | 2020.12.21 |
---|---|
<백준 알고리즘> 20363번: 당근 키우기 (0) | 2020.12.21 |
<백준 알고리즘> 20361번: 일우는 야바위꾼 (0) | 2020.12.21 |
<백준 알고리즘> 20206번: 푸앙이가 길을 건너간 이유 (0) | 2020.12.16 |
<백준 알고리즘> 20300번: 서강근육맨 (0) | 2020.12.16 |