백준 1157번 단어 공부(java)

마뇽미뇽·2024년 5월 5일
0

알고리즘 문제풀이

목록 보기
57/165

1.문제

https://www.acmicpc.net/problem/1157

2.풀이

toLowerCase로 전부 소문자로 바꿔줬다.
문자열을 쪼개서 각각 어떤 단어를 사용했는지 알아봐야하기 때문에 문자열 길이만큼 반복문을 돌린다.
alpha배열 안에 같은 단어면 증가하도록 설정했다.
max값을 -1로 하고 alpha배열 안에 값이 더 크다면 배열값이 max가 되도록 조건을 준다.
여러개일 경우 ? 아닌경우 해당 문자를 출력하도록 한다.
대문자이기 때문에 'A'를 더해야한다.

3.코드

package com.example.baekjoon;

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        String s = sc.next().toLowerCase();
        int alpha[] = new int[26];

        int max = 0;
        char c = '?';

        for(int i = 0; i < s.length(); i++){
            alpha[s.charAt(i) - 'a']++;
        }

        for(int i = 0; i < 26; i++){
            if(max < alpha[i]) {
                max = alpha[i];
                c = (char) (i + 'A');
            }
            else if(max == alpha[i])
                c = '?';
        }
        System.out.println(c);
    }
}

4. 후기

문자열을 쪼개고 각각 증가시켜야한다는 건 알았지만 구현을 어떻게 해야할지에서 막혔다.
아직 alpha[s.charAt(i) - 'a'] 라는 생각을 잘 못하는 거 같다.
https://st-lab.tistory.com/64 님을 참고하였다.

profile
Que sera, sera

0개의 댓글