https://www.acmicpc.net/problem/1157
1157번: 단어 공부
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
www.acmicpc.net
카운팅 정렬을 사용하면 정말 쉽게 풀 수 있다.
<JAVA>
import java.io.BufferedReader;
import java.io.InputStreamReader;
class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
char[] s = br.readLine().toCharArray();
int len = s.length;
int numArr[] = new int[26];
int Max = -1;
int sameCount = 0;
int MaxChar = 0;
for (int i = 0; i < len; ++i) {
if (s[i] >= (int) 'a') {
++numArr[s[i] - 'a'];
} else {
++numArr[s[i] - 'A'];
}
}
for (int i = 0; i < 26; ++i) {
if (numArr[i] > Max) {
Max = numArr[i];
sameCount = 0;
MaxChar = i;
} else if (Max == numArr[i]) {
sameCount++;
}
}
if (sameCount > 0)
System.out.print('?');
else
System.out.print((char) (MaxChar + 'A'));
}
}
<C++>
#include<iostream>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
string s;
cin >> s;
int size = s.size();
int numArr[26] = { 0 };
int Max = -1;
int sameCount = 0;
int MaxChar = 0;
for (int i = 0; i < size; ++i)
{
if (s[i] >= (int)'a')
{
++numArr[s[i] - 'a'];
}
else
{
++numArr[s[i] - 'A'];
}
}
for (int i = 0; i < 26; ++i)
{
if (numArr[i] > Max)
{
Max = numArr[i];
sameCount = 0;
MaxChar = i;
}
else if (Max == numArr[i])
{
sameCount++;
}
}
if (sameCount > 0)
cout << "?";
else
cout << (char)(MaxChar + 'A');
}
'알고리즘 > BOJ' 카테고리의 다른 글
14889. 스타트와 링크 (0) | 2019.10.15 |
---|---|
16235. 나무재테크 (0) | 2019.10.15 |
13460. 구슬 탈출 2 (0) | 2019.10.15 |
1717. 집합의 표현 (0) | 2019.10.14 |
4963. 섬의 개수 (0) | 2019.10.07 |