문제
정답 코드
#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";
}
문제 풀이의 흐름
- 문자열을 받고 각 첫번째 글자에 해당하는 알파벳만이 의미있는 정보라고 판단했다.
- 알파벳 갯수만큼 배열을 만들고 그 배열에 첫번째 문자만을 이용해 ++를 해주었다.
- 이후 5이상이면 문자를 출력을 진행해주었다.
- 아무것도 출력이 안 된 경우에는 없으므로 문제에 조건에 맞게 해주었다.
주의 할 점
이 문제는 어떤 정보가 내 문제 풀이에 필요한지 가지치기를 하는 문제 같았다. 쉬운 문제라서 어려움은 없었지만 높은 난이도로 갈 수록 문제가 길어지면 얼어붙기 마련인데 이런 훈련이 필요함을 느꼈다.
반성 및 고찰
최대한 메모리를 적게 사용하려고하다보니 이 코드는 특정 입력에 대해서는 sementation fault가 나온다. 하지만 코딩테스트에서 들어오는 입력들에 대해서 예외처리는 크게 보지 않으므로 가능한한 간단하고 메모리를 적게 쓰는 쪽으로 코드를 완성하였다.
Uploaded by N2T
728x90
'알고리즘 기초시절' 카테고리의 다른 글
백준 A+B-4 문제 10951번 EOF (0) | 2023.01.03 |
---|---|
백준 11655번 ROT13(C++) (0) | 2022.12.30 |
백준 10988번 팰린드롬인지 확인하기(C++) (0) | 2022.12.29 |
백준 2979번 트럭주차 (C++) (0) | 2022.12.29 |
백준10808번 알파벳 개수(C++) (0) | 2022.12.29 |