https://www.acmicpc.net/problem/1157
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 {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int[] arr = new int[26]; // 알파벳 배열
String s=br.readLine().toUpperCase(); // 대문자로 치환
for(char x : s.toCharArray()){
arr[x-'A']++; // 해당 인덱스 값 1 증가
}
int max=0;
char answer='?';
for(int i=0; i<arr.length; i++){
if(arr[i] > max) {
max =arr[i];
answer=(char)(i+'A'); // 알파벳으로 변환
}
else if(arr[i]==max) answer='?'; // 최댓값과 같은 알파벳이 있다면
}
System.out.println(answer);
}
}
제일 먼저 해시맵을 사용해 풀었었는데, 이 방법이 더 간단한것 같다.
26자리의 알파벳 배열을 만들고, 문제에 대문자와 소문자 구분이 없기 때문에 입력받은 문자열을 모두 대문자로 치환한다.
대문자의 범위는 65~90이다. 알파벳에서 A(65)를 빼주면 해당 알파벳의 인덱스를 구할 수 있다.
알파벳 배열에 입력받은 문자열의 알파벳의 빈도수를 원소로 넣어준다.
배열을 돌면서 max의 값을 갱신해 최댓값을 구한다.
이 때 max의 값과 같은 배열의 원소가 있다면 최대 개수의 문자가 2개 이상이라는 뜻이므로 answer를 "?"로 해준다.
'ALGORITHM' 카테고리의 다른 글
[JAVA] 백준 13335번- 트럭 (0) | 2022.07.24 |
---|---|
[JAVA] 백준 5464번- 주차장 (0) | 2022.07.22 |
[JAVA] 백준 17413번- 단어 뒤집기2 (0) | 2022.07.21 |
[JAVA] 백준 2675번- 문자열 반복 (0) | 2022.07.20 |
[JAVA] 백준 11899번- 괄호 끼워넣기 (0) | 2022.07.20 |