https://www.acmicpc.net/problem/1157
위의 문제이다.
위의 문제처럼, 알파벳 소문자 대문자와 관계없이 가장 많이 쓰인 문자를
대문자로 출력하라는 문제이다.
만약 가장 많이 사용되는 문자가 중복된다면 ?를 출력하라!
위 문제를 풀기위해
위와 같이 생각을 해보았다. 1,2번까지는 얼추 했는데,,
위와 같이 대소문자와 관계없이
a,A => arr[0]
b,B => arr[1]
c,C => arr[2]
d,D => arr[3]
e,E => arr[4]
f,F => arr[5]
...
z,Z => arr[25]에 넣고 싶다.
내힘으로는 풀이가 안되어 풀이를 보고 작성하겠다.
arr[] 배열에 입력한 각 자리수에 문자의 개수를 넣었으니, 이제 count하는 코드를 작성해보자.
package baekjoon.solution;
import java.util.Scanner;
public class Baekjoon_1157 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String str = scan.next();
int[] arr = new int[26];
// arr[0] = a , A
// arr[1] = b , B
// arr[2] = c , C
// arr[3] = d , D
// ...
// arr[25] = z,Z
for(int i=0;i<str.length();i++){
if(str.charAt(i)>='A' && str.charAt(i)<='Z'){
arr[str.charAt(i)-'A']++;
// 대문자일 때,
}else{
arr[str.charAt(i)-'a']++;
//소문자일 때,
}
}
int max = 0;
char result = '?';
for(int i=0;i<26;i++){
if(arr[i]>max){
max = arr[i];
result = (char)(i+65);
}else if(arr[i] == max )
result ='?';
}
System.out.println(result);
}
}
끝!