알고리즘/백준-브론즈

백준 1159번 농구경기 (C++)

뜨거운 개발자 2022. 12. 30. 23:14

문제

정답 코드

#include <iostream>
#include <string>

using namespace std;
char alpha[26];

int main()
{
	ios :: sync_with_stdio(false);
	cin.tie(0); cout.tie(0);
	string s;
	int n;
	int	flag= 0;
	cin >> n;
	for (int i=0; i < n; i++)
	{
		cin >>s;
		alpha[(s[0] - 'a')]++;
	}
	for (int i=0; i < 26; i++)
	{
		if (alpha[i] >= 5)
		{
			cout << (char)(i+'a');
			flag = 1;
		}
	}
	if (!flag)
		cout << "PREDAJA";
}

문제 풀이의 흐름

  1. 문자열을 받고 각 첫번째 글자에 해당하는 알파벳만이 의미있는 정보라고 판단했다.
  1. 알파벳 갯수만큼 배열을 만들고 그 배열에 첫번째 문자만을 이용해 ++를 해주었다.
  1. 이후 5이상이면 문자를 출력을 진행해주었다.
  1. 아무것도 출력이 안 된 경우에는 없으므로 문제에 조건에 맞게 해주었다.

주의 할 점

이 문제는 어떤 정보가 내 문제 풀이에 필요한지 가지치기를 하는 문제 같았다. 쉬운 문제라서 어려움은 없었지만 높은 난이도로 갈 수록 문제가 길어지면 얼어붙기 마련인데 이런 훈련이 필요함을 느꼈다.

반성 및 고찰

최대한 메모리를 적게 사용하려고하다보니 이 코드는 특정 입력에 대해서는 sementation fault가 나온다. 하지만 코딩테스트에서 들어오는 입력들에 대해서 예외처리는 크게 보지 않으므로 가능한한 간단하고 메모리를 적게 쓰는 쪽으로 코드를 완성하였다.


Uploaded by N2T

728x90