[백준 1159] 농구 경기 (C#, C++) - soo:bak
작성일 :
문제 링크
설명
농구 선수들의 이름을 확인하여, 동일한 알파벳으로 시작하는 이름이 5
명 이상 있는 알파벳들을 출력하는 문제입니다.
- 첫 줄에 입력되는 이름의 수가 주어집니다.
- 이어지는 각 줄마다 선수 이름이 하나씩 주어집니다.
- 이름의 첫 글자를 기준으로 같은 글자가
5
명 이상 존재한다면, 해당 글자를 결과에 포함시킵니다. - 조건을 만족하는 알파벳이 없다면
PREDAJA
를 출력합니다.
접근법
- 이름의 개수를 입력받습니다.
- 각 이름에 대해
첫 글자의 등장 횟수
를 저장합니다. - 알파벳별 등장 횟수를 순회하며
5
회 이상 등장한 알파벳을 정답 문자열에 추가합니다. - 정답 문자열이 비어 있다면
PREDAJA
를 출력하고, 그렇지 않으면 정렬된 문자열을 출력합니다.
Code
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
using System;
using System.Linq;
class Program {
static void Main() {
int n = int.Parse(Console.ReadLine());
var count = new int[26];
for (int i = 0; i < n; i++) {
string name = Console.ReadLine();
count[name[0] - 'a']++;
}
string result = string.Concat(
Enumerable.Range(0, 26)
.Where(i => count[i] >= 5)
.Select(i => (char)(i + 'a'))
);
Console.WriteLine(string.IsNullOrEmpty(result) ? "PREDAJA" : result);
}
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n; cin >> n;
int cnt[26] = {};
while (n--) {
string s; cin >> s;
cnt[s[0] - 'a']++;
}
string ans;
for (int i = 0; i < 26; i++)
if (cnt[i] >= 5) ans += 'a' + i;
cout << (ans.empty() ? "PREDAJA" : ans) << "\n";
return 0;
}