1159 - 농구경기

재찬·2023년 1월 3일
0

Algorithm

목록 보기
7/64

문제

코드

#include <bits/stdc++.h>
using namespace std;

int countArr[26];

int main(){
	int total;
	string s;
	int check = 0;
	
	cin >> total;
	
	for(int i = 0; i < total; i++){
		cin >> s;
		countArr[s[0] - 'a']++;
	}
	
	for(int i = 0; i < 26; i++){
		if(countArr[i] > 4){
			cout << (char)(97 + i);
			check++;
		}
	}
	
	if(check == 0){
		cout << "PREDAJA";
	}
	
	return 0;
}

풀이

counting 하는 문제는 웬만하면 map, 배열을 떠올리면 된다고 한다.
선수들의 성, 첫 글자를 카운트 하면 되는 문제이기에 성 배열을 미리 만들어둔다.
선수들을 하나씩 입력 받으면서 선수들 성에 맞는 배열을 증가 시킨다.
완성된 배열에서 5이상이라면 소문자로 바꿔 출력하면 되고 체크를 해줘야한다.
한 번도 체크가 되지 않았다면 PREDAJA를 출력해야 하기 때문에 배열 한 바퀴를 돌고 check가 없다면 PREDAJA를 출력하면 된다.
첫 번째 풀이는 입력받는 선수들의 배열을 하나 더 선언했는데 생각해보니 선수들을 따로 저장할 필요는 없을것 같아서 string으로만 입력을 받고 이를 바로 count 배열에 연산해주면 됐다.

결과

후기

전체적인 알고리즘 자체는 최근에 풀었던 문제들과 비슷하여 어렵지 않았다.
푸는 과정에서 코드가 너무 길어져 겹치는 부분이 있는지 뺄 수 있는 변수들이 있는지 확인해 볼 수 있었다.
노트에 한 번 정리해서 푼다고 푸는데도 한번에 정리되지 않은 부분이 있는듯 했다.
앞으로도 아름다운 코드를 써보려고 노력해야겠다.

0개의 댓글