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를 더해서 문자로 출력한다. 

 

느낀 점

아스키코드의 연속을 이용해서 푸는 문제이다. 처음에는 어떻게 해야 할지 몰랐는데, 아스키코드의 연속을 이용할 수 있음을 생각해낸 후에는 금방 풀었다. 

'PS (C, C++)' 카테고리의 다른 글

[백준/C] 1085 직사각형에서 탈출  (0) 2022.08.22
[백준/C] 1598 꼬리를 무는 숫자 나열  (0) 2022.08.22
[백준/C] 1032 명령 프롬프트  (0) 2022.08.20
[백준/C] 1010 다리놓기  (0) 2022.08.20
[백준/C] 1924 2007년  (0) 2022.08.20