Pr. 1159 농구경기
문제
상근이는 농구의 세계에서 점차 영향력을 넓혀가고 있다. 처음에 그는 농구 경기를 좋아하는 사람이었다. 농구에 대한 열정은 그를 막을 수 없었고, 결국 상근이는 농구장을 청소하는 일을 시작했다. 상근이도 농구장을 청소하면서 감독이 되기 위해 가져야할 능력을 공부해나갔다. 서당개 3년이면 풍월을 읊듯이 상근이는 점점 감독으로 한 걸음 다가가고 있었다. 어느 날 그에게 지방의 한 프로농구팀을 감독할 기회가 생기게 되었다. 그는 엄청난 지도력을 보여주며 프로 리그에서 우승을 했고, 이제 국가대표팀의 감독이 되었다.</br> 내일은 일본과 국가대표 친선 경기가 있는 날이다. 상근이는 내일 경기에 나설 선발 명단을 작성해야 한다.</br> 국가대표팀의 감독이 된 이후에 상근이는 매우 게을러졌다. 그는 선수의 이름을 기억하지 못하고, 각 선수의 능력도 알지 못한다. 따라서, 누가 선발인지 기억하기 쉽게 하기 위해 성의 첫 글자가 같은 선수 5명을 선발하려고 한다. 만약, 성의 첫 글자가 같은 선수가 5명보다 적다면, 상근이는 내일 있을 친선 경기를 기권하려고 한다.</br> 상근이는 내일 경기를 위해 뽑을 수 있는 성의 첫 글자를 모두 구해보려고 한다.</br>
입력
첫째 줄에 선수의 수 N (1 ≤ N ≤ 150)이 주어진다. 다음 N개 줄에는 각 선수의 성이 주어진다. (성은 알파벳 소문자로만 이루어져 있고, 최대 30글자이다)
출력
상근이가 선수 다섯 명을 선발할 수 없는 경우에는 “PREDAJA” (따옴표 없이)를 출력한다. PREDAJA는 크로아티아어로 항복을 의미한다. 선발할 수 있는 경우에는 가능한 성의 첫 글자를 사전순으로 공백없이 모두 출력한다.
예제 입력
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| 18
babic
keksic
boric
bukic
sarmic
balic
kruzic
hrenovkic
beslic
boksic
krafnic
pecivic
klavirkovic
kukumaric
sunkic
kolacic
kovacic
prijestolonasljednikovi
|
예제 출력
풀이과정
전제조건
- 시간 복잡도, 공간 복잡도
- for문을 사용하여 시간 복잡도는 o(n)이다.
- 최대, 최소 조건
- 선수 최대 150명으로 n의 최대값은 150이다.
- 사용 알고리즘
- 단순 구현으로 해결가능
- 선수의 수를 입력받는다.
- 각 선수의 이름을 입력받는다.
- 각 선수의 첫 글자를 카운트한다.
- 반례
제출 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
| #include<bits/stdc++.h>
using namespace std;
int m, ret[26];
string result;
int main(){
cin >> m;
for(int i = 0; i < m; i++){
string s;
cin >> s;
int a = s[0] - 'a';
ret[a]++;
}
result = "";
for(int i = 0; i < 26; i++){
if (ret[i] >= 5){
result += (char)(i + 'a');
}
}
if (result == ""){
cout << "PREDAJA";
}
else{
cout << result;
}
return 0;
}
|
해설
생각해볼 점
- 트럭문제와 동일한 누적합 문제이다.
- 입력값을 받는 동시에 카운팅을 한다.
수정방안
정답 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| #include<bits/stdc++.h>
using namespace std;
int n, cnt[26];
string s, ret;
int main(){
cin >> n;
for(int i = 0; i < n; i++){
cin >> s;
cnt[s[0] - 'a']++;
}
for(int i = 0; i < 26; i++)if(cnt[i] >= 5) ret+= i + 'a';
if(ret.size()) cout << ret << "\n";
else cout << "PREDAJA" << "\n";
}
|