https://www.acmicpc.net/problem/1159
선수 이름을 n개 줄에 걸쳐 입력받고 맨 첫글자가 같은 선수가 5명보다 적으면 PREDAJA를 출력, 5명보다 많다면 해당 첫글자를 사전순으로 공백없이 모두 출력하는 문제다.
알파벳의 cnt를 저장할 배열 arr[26]을 선언하고
n개 줄에 걸쳐 입력받은 선수 이름의 맨 첫 글자에 해당하는 index의 원소를 ++해준다.
-> 아스키 코드를 이용하여 arr[s[0]-'a']+=1
#include <iostream>
#include <algorithm>
#include<string>
using namespace std;
int n;
string s;
int arr[26] = { 0, };
int flag = 0;
int main() {
cin >> n;
for (int i = 0; i < n; i++) {
cin >> s;
arr[s[0] - 'a']+=1;
}
for (int i = 0; i < 26; i++) {
if (arr[i] >= 5) {
cout << char(97 + i);
flag = 1;
}
}
if (flag == 0) {
cout << "PREDAJA" << "\n";
}
}
arr[i]가 5 이상이면 바로 해당 원소(알파벳)를 출력하도록 했는데
따로 string ret
을 선언하고
if(arr[i]>=5)
이면 ret+=i+'a'
이렇게 해서 최종적으로 ret
을 출력하는 방법도 있다.