핵심 아이디어 위주로 소개하겠다.
일단 대소문자 모두 세어야 하니 위와같이 3개의 배열을 선언한다.
대문자 알파벳을 세는 코드와 소문자 알파벳을 세는 코드 구현
(대문자는 65 소문자는 97빼주면 된다)밑의 ASCII코드 참조
대소문자 구분없이 같이 취급해야하니 alpa_BS에 합쳐주고
제일 많이 나온 알파벳과 인덱스를 구한다
최대로 많이나온 값이 2개 이상 있으면 ? 출력하게 구현해야한다.
package baek_1157;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Count_word
{
public static void main(String[] args) throws IOException
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String temp = br.readLine();
int[] alpa_B = new int[26];
int[] alpa_S = new int[26];
int[] alpa_BS = new int[26];
for(int i=0 ; i<temp.length() ; i++)
{
int idx = temp.charAt(i);
if(idx>='A' && idx<='Z')
{
alpa_B[idx-65]++;
}
else if(idx>='a' && idx<='z')
{
alpa_S[idx-97]++;
}
}
int many=0;
int many_idx=0;
for(int i=0;i<26;i++)
{
alpa_BS[i] = alpa_B[i] + alpa_S[i];
}
for(int i=0;i<26;i++)
{
if(alpa_BS[i]>many)
{
many = alpa_BS[i];
many_idx = i;
}
}
int count=0;
for(int i=0;i<26;i++)
{
if(many == alpa_BS[i])
{
count++;
}
}
if(count==1)
{
System.out.print((char)(many_idx+65));
}
else if(count > 1)
{
System.out.print("?");
}
}
}