📌 문제
https://www.acmicpc.net/problem/1157
📌 풀이
- 알파벳 개수를 확인하기 위하여 26칸의 배열 크기를 생성한다. (알파벳 개수가 26개)
- 반복하기에 앞서 입력한 값을 toUpperCase() 메서드를 통해 대문자로 변환
- 대문자의 범위는 십진수로 65~90이고, 소문자는 97~122이다. (아스키코드표 참고)
- 해당 알파벳의 인덱스 값을 가져오기 위해서 -65를 해주면 된다.
- A는 65 이므로 65를 빼면 0
- C는 67 이므로 65를 빼면 2
- Z는 90 이므로 65를 빼면 25
- 입력한 문자열의 값을 하나씩 순회하면서 해당 위치에 ++ 를 해준다.
- 최댓값 찾기 위해 max 변수와 문자 나온 값이 같은 경우? 출력을 위한 ch 변수 생성
- alphabet 배열 안에 해당하는 문자가 없을 시 초기값으로 0으로 주어지기 때문에 max = -1
- alphabet 배열을 순회하면서 max 보다 클 경우 해당 값을 max에 저장하고, 대문자 이므로 ch 변수에 대문자 출력하기 위해 i + 65
- max와 값이 같은 게 나오면? 출력
📌 코드
package baekjoon;
import java.util.Scanner;
public class Q1157_1 { // 단어 공부
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int[] alphabet = new int[26];
String str = scanner.nextLine().toUpperCase();
for (int i = 0; i < str.length(); i++) { // 입력한 알파벳 개수 확인
int tempNum = str.charAt(i) - 65; // 값을 하나씩 가져와서 대문자 - A
alphabet[tempNum]++; // 해당 위치에 ++
}
int max = -1; // 배열안에 초기 값이 0이므로 -1로 지정
char ch = '?';
for (int i = 0; i < alphabet.length; i++) { // 최대값 찾기
if (alphabet[i] > max) {
max = alphabet[i];
ch = (char) (i + 65);
} else if (alphabet[i] == max) {
ch = '?';
}
}
System.out.println(ch);
}
}
'Algorithm' 카테고리의 다른 글
[Java] 백준 3028 : 창영마을 (0) | 2022.06.21 |
---|---|
[Java] 백준 1032 : 명령 프롬프트 (0) | 2022.06.08 |
[Java] 백준 11944 : NN (0) | 2022.04.01 |
[Java] 백준 2864번 : 5와 6의 차이 (0) | 2022.03.27 |
[Java] 백준 10820번 : 문자열 분석 (0) | 2022.03.16 |