Baekjoonアルゴリズム | 1157番問題: 単語の勉強
出典
https://www.acmicpc.net/problem/1157
問題
Baekjoon Online Judgeの1157番問題、単語の勉強を解きます。
入力
正確な入力形式と制約は元の問題文に従います。
出力
問題で求められる答えを出力します。
サンプル入力 1
Mississipi
サンプル出力 1
?
サンプル入力 2
zZa
サンプル出力 2
Z
サンプル入力 3
baaa
サンプル出力 3
A
アルゴリズム分類
- 数学
- 実装
解説
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {
String input = br.readLine();
Map<Character, Integer> alphabetCountMap = new HashMap<>();
Set<Character> maxSet = new HashSet<>();
int max = Integer.MIN_VALUE;
for (int i = 0; i < input.length(); i++) {
Character alphabet = Character.toUpperCase(input.charAt(i));
int count;
if (alphabetCountMap.containsKey(alphabet)) {
count = alphabetCountMap.get(alphabet) + 1;
} else {
count = 0;
}
alphabetCountMap.put(alphabet, count);
if (max < count) {
max = count;
maxSet.clear();
maxSet.add(alphabet);
} else if (max == count) {
maxSet.add(alphabet);
}
}
if (maxSet.size() > 1) {
System.out.println("?");
} else {
System.out.println(maxSet.iterator().next());
}
}
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main2 {
public static void main(String[] args) throws IOException {
try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {
String input = br.readLine();
int[] alphabet = new int[26];
for (int i = 0; i < input.length(); i++) {
//char c = Character.toUpperCase(input.charAt(i));
//alphabet[c - 65]++;
char c = input.charAt(i);
if (c >= 'a')
alphabet[c - 'a']++;
else
alphabet[c - 'A']++;
}
char output = 0;
int max = Integer.MIN_VALUE;
for (int i = 0; i < alphabet.length; i++) {
if(max < alphabet[i]) {
max = alphabet[i];
output = (char) (i + 'A');
} else if(max == alphabet[i]) {
output = '?';
}
}
System.out.println(output);
}
}
}