백준 1157 java 자바 단어 공부 [문자열]
알파벳 대소문자 구분 않고 입력하면 가장 많이 쓰인 알파벳을 대문자로 출력하는 프로그램이다.
가장 많이 쓰인 알파벳이 여러개일 경우는 '?'를 출력한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
import java.util.Scanner;
//baekjoon_1157
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String st = sc.nextLine().toUpperCase();
int cnt[] = new int[26];
int max = 0;
char result = 'c';
int index;
for(int i=0; i<st.length(); i++) {
index = st.charAt(i)-65;
cnt[index]++;
if(max < cnt[index]) {
max = cnt[index];
result = st.charAt(i);
} else if(max == cnt[index])
result = '?';
}
System.out.println(result);
}
}
|
cs |
line 7 : 문자열을 입력받고 toUpperCase() 함수로 문자를 대문자로 변환한다.
line 8 : A~Z까지 총 26개이므로 26개의 배열을 선언한다.
line 9 : 가장 많이 사용된 알파벳을 찾기 위해 비교하는 변수.
line 10 : 결과를 출력해줄 char 변수다. 초기화를 해야하므로 아무 문자나 집어 넣은것.
line 12 : 각 알파벳의 배열 위치를 찾기위한 변수.
line 13 : st Stirng 크기 만큼 반복
line 14 : charAt() 메소드로 각 문자를 추출하고 -65를 하여 index에 집어 넣는다.
-65를 하는 이유는 A가 아스키코드값으로 65이므로 -65를 하여 cnt[0] 으로 접근하기 위함이다.
A는 cnt[0] B는 cnt[1] ... Z는 cnt[25] 에 접근하여 원소값을 하나 올려준다. (16행)
알파벳 하나가 나오면 cnt 해당 원소를 1 올려주는 것이다.
line 17, 18 : max와 비교하여 방금 올린 값이 더 높으면 max를 변경해준다.
line 19 : 위 if문에 들어가면 result도 마찬가지로 변경한다.
line 20, 21 : 만약 max와 cnt[index]값이 같으면 가장 많이 사용된 알파벳이 두 개 나온것이므로 다음 더 큰게 나오기 전까지는 result를 ? 로 변경해둔다.
line 23 : for문이 끝나면 result를 출력.
'프로그래밍 > 백준 알고리즘 코드' 카테고리의 다른 글
백준 2908번 java 자바 상수 (문자열) (0) | 2020.09.27 |
---|---|
백준 1152번 java 자바 단어의 개수 [문자열] (0) | 2020.09.19 |
백준 2675번 java 자바 문자열 반복 [문자열] (0) | 2020.09.19 |
백준 10809번 java 자바 알파벳 찾기 (0) | 2020.09.13 |
백준 11720 java 자바 숫자의 합 (0) | 2020.09.13 |
댓글