B1157 단어 공부
날짜 | 2024-03-28 |
사용 언어 | Java |
문제 유형 | 구현, 문자열 |
문제 URL | https://www.acmicpc.net/problem/1157 |
시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
---|---|---|---|---|---|
2 초 | 128 MB | 284114 | 113312 | 89450 | 39.685% |
문제 #
문제 설명 #
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
제한사항 #
-
첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다.
-
주어지는 단어의 길이는 1,000,000을 넘지 않는다.
-
첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다.
-
단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.
나의 풀이 #
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
// 모두 대문자로 변경 (대소문자 구분x 조건 / 대문자 출력 조건)
String str = br.readLine().toUpperCase();
br.close();
// 알파벳별 횟수 저장
HashMap<Character, Integer> hashMap = new HashMap<>();
for (int i = 0; i<str.length(); i++) {
hashMap.put(str.charAt(i), hashMap.getOrDefault(str.charAt(i), 0) + 1);
}
int max = 0;
char maxAlph = '?';
// 가장 많이 나온 알파벳 찾기
for (Map.Entry<Character, Integer> map : hashMap.entrySet()) {
if (max < map.getValue()) {
max = map.getValue();
maxAlph = map.getKey();
}
}
// 가장 많이 나온 알파벳이 여러개인지 확인
int count = 0;
for (int mapValue : hashMap.values()) {
if (max == mapValue) {
count++;
}
}
maxAlph = count > 1 ? '?' : maxAlph;
bw.write(String.valueOf(maxAlph));
bw.close();
}
}
다른 사람의 풀이 #