그저 내가 되었고

☕️Java:: 백준 자바 1157번(단어 공부) 본문

개발/Java

☕️Java:: 백준 자바 1157번(단어 공부)

hyuunii 2023. 10. 24. 10:47

문제

 

 

 

 

풀이 설계

① 답안을 '대문자'로 출력하면 되니 먼저 toUpperCase 이용해서 전부 대문자로 변환

② 알파벳 갯수만큼의 int 배열 생성

③ for문으로 입력 str의 length만큼 순회하며 입력 str[i]의 알파벳 인덱스값 하나하나씩 ②의 배열 해당 자리에 ++

④ max를 일단 0으로, answer을 ?로 둔 후 ②의 배열 순회하며 큰 값 만날때마다 max값 업데이트 후 그 값으로 answer 인덱스 뽑아서 char로 변환해 정답 리턴

⑤ max값이 같은게 하나라도 있으면 가장 많이 사용된 알파벳이 여러개라는 뜻이므로 정답으로 ? 리턴

 

 

 

 

 

답안 소스코드

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
26
27
28
29
import java.io.*;
 
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
 
        String s = br.readLine();
        String str = s.toUpperCase();
 
        int[] count = new int[26];
 
        for (int i = 0; i < str.length(); i++) {
            int num = str.charAt(i) - 'A';
            count[num]++;
        }
 
        int max = 0;
        char answer = '?';
        for (int i = 0; i < count.length; i++) {
            if (max < count[i]) {
                max = count[i];
                answer = (char) (i + 'A');  //아스키코드 문자 ↔ 숫자
            } else if (max == count[i]) {
                answer = '?';
            }
        }
        System.out.println(answer);
    }
}
cs

 

 

 

 

새로 배운 메쏘드

아스키코드 문자 ↔ 숫자

e.g. 문자 to 숫자

char ch = sc.nextLine().charAt(0);
int num = (int)ch;

 

e.g. 숫자 to 문자

int num = sc.nextInt();
char ch = (char)num;