반응형
문제
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
입력
첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다.
Mississipi
zZa
z
baaa
출력
첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.
?
Z
Z
A
알고리즘 분류
구현(implementation), 문자열(string)
소스코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
String str = br.readLine();
char[] upStr = str.toUpperCase().toCharArray();
Map<Character,Integer> data = new HashMap();
for(int i=0; i<upStr.length; i++) {
Integer val = data.get(upStr[i]);
if(val == null) {
data.put(upStr[i], 1);
} else
{
data.put(upStr[i], val+1);
}
}
int[] rankVal = {0};
char[] rankId = {'?'};
data.forEach((id, val)->{
if(val > rankVal[0]) {
rankVal[0] = val.intValue();
rankId[0] = id.charValue();
}
});
data.forEach((id, val)->{
if(val.equals(rankVal[0]) && !id.equals(rankId[0]) ) {
rankId[0] = '?';
}
});
System.out.print(rankId[0]);
}
}
반응형
'코딩테스트 > 백준' 카테고리의 다른 글
JAVA 백준 2908번 상수 (0) | 2022.06.01 |
---|---|
JAVA 백준 1152번 단어의 개수 (0) | 2022.06.01 |
JAVA 백준 2675번 문자열 반복 (0) | 2022.06.01 |
JAVA 백준 10809번 알파벳 찾기 (0) | 2022.05.06 |
JAVA 백준 11720번 숫자의 합 (0) | 2022.05.06 |
댓글