https://www.acmicpc.net/problem/1157
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다.
charAt()함수로 문자열을 하나씩 분리하여 26개의 count 함수에 집어넣고 최대값을 구하는 과정을 통해서 계속 최대값을 갱신.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Main {
static String s;
static String r_s;
static int count[];
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
s=br.readLine();
r_s=s.toUpperCase(); // 대문자 변환
count=new int[26]; // 알파벳 순서로 배열 생성 // 배열안에 알파벳 개수만큼 값 저장
for(int i=0;i<s.length();i++) {
char a=r_s.charAt(i); // 입력받은 문자열 문자 하나하나씩 잘라서 a에 저장
int n=a-65; //아스키 코드 A=65이므로 알파벳 순서대로 배열에 저장 가능
count[n]++; //count배열 증가
}
int max=0;
char ans=' ';
for(int i=0;i<26;i++) { // 최대값 구하기
if(max<count[i]) { //A~Z까지 비교하면서 최대값 갱신
max=count[i];
ans=(char) (i+65);
}else if(max==count[i]) { // 개수가 같은 알파벳이 여러개있으면 출력은 ? 로 나온다
ans='?';
}
}
System.out.println(ans); //정답 출력
}
}
아스키 코드 사용으로 문자를 정수의 형태로 변환