PS (C, C++)
[백준/C] 1159 농구 경기
최연재
2022. 8. 21. 23:08
https://www.acmicpc.net/problem/1159
1159번: 농구 경기
상근이는 농구의 세계에서 점차 영향력을 넓혀가고 있다. 처음에 그는 농구 경기를 좋아하는 사람이었다. 농구에 대한 열정은 그를 막을 수 없었고, 결국 상근이는 농구장을 청소하는 일을 시작
www.acmicpc.net
코드
#include <stdio.h>
int main()
{
int n, countNum = 0;
scanf("%d", &n);
char name[151][31];
char first[151];
int count[26] = {0};
for (int i = 0; i < n; i++)
{
scanf("%s", name[i]);
first[i] = name[i][0];
}
for (int i = 0; i < n; i++)
{
count[first[i] - 'a']++;
if (count[first[i] - 'a'] == 5) countNum++;
}
if (countNum == 0) printf("PREDAJA");
else for (int i = 0; i < 26; i++) if (count[i] >= 5) printf("%c", 'a' + i);
return 0;
}
코드 설명
반복문을 돌면서 선수의 이름 성을 입력받고 first배열에 성의 첫 번째 문자를 first 배열에 저장한다.
이후 다시 반복문을 돌면서 성의 첫 번째 문자가 몇 번 나오는지를 count배열에 저장한다. 만약 다섯 번 나온 성이 있다면 countNumber에 1을 더한다.
만약 conutNumber가 0이라면 선수 다섯 명을 선발할 수 없는 경우이기 때문에 PREDAJA를 출력한다.
그렇지 않은 경우에는 count배열에 저장된 값이 5 이상인 인덱스에 a를 더해서 문자로 출력한다.
느낀 점
아스키코드의 연속을 이용해서 푸는 문제이다. 처음에는 어떻게 해야 할지 몰랐는데, 아스키코드의 연속을 이용할 수 있음을 생각해낸 후에는 금방 풀었다.