CSE/baekjoon & swexpert
baekjoon 1157 단어공부 ] 문자열처리
언제나 변함없이
2019. 3. 10. 16:37
반응형
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
int[] alpha = new int[26];
int result = 0;
int check = 0;
int index = 0;
for(int i = 0; i < str.length(); i++)
for(int j = 0; j < 26; j++)
if(str.charAt(i) == 65+j || str.charAt(i) == 97+j) alpha[j]++;
for(int i = 0 ; i < alpha.length; i++) result = max(result, alpha[i]);
for(int i = 0 ; i < alpha.length; i++) if(alpha[i] == result) {check++; index = i;}
if(check > 1) System.out.println("?");
else System.out.println((char)(index+65));
}
private static int max(int a, int b) {
return a>b?a:b;
}
}
너무 하드코딩이다..ㅠㅠ
다른 방법으로는
- 받은 문자열을 다 toUpperCase()나 toLowerCase로 바꿔준 뒤
- 25개의 알파벳이므로 25개의 int배열 안에 나온 값(소문자기준, 문자열(i)-65)을 저장시켜주고
- int배열의 첫 번째 값과 나머지와 비교해서 가장 큰 값이 두 개 이상으로 겹치면 ? Flag를 설정해주고, 아니면 최대일 때의 index값을 받아놓는다.
- index + 65를 출력해주면 끝.
반응형