Algorithm

백준 1157번 JAVA (단어공부 알파벳 찾기)

Geon_Ho 2023. 3. 1. 18:22

문제해설

해당 문제는 다양한 방법을 종합해서 풀어보았다.

char 자료형을 다루었고, 반복문 및 중첩 반복문을 사용하고, 조건문, 배열에 대한 개념 등을 사용하였다.

 

해당 코드에 대한 설명은 주석으로 처리하였다.

결과코드

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class Main {
    public static void main(String args[]) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String inputWord = br.readLine();       // 단어를 입력받고, 알파벳 인덱스 배열 만들기
        int[] alpIndex = new int[26];
        
        char uppercase = 'A';                   // char 로 계산하며 알파벳 체크하기
        char lowercase = 'a';
        
        int max = 0;
        int cnt = 0;
        int result = 0;
        
        for (int i = 0; i < 26; i++){           		// 알파벳 각각 체크 (알파벳 개수만큼 반복)
            for (int j = 0; j < inputWord.length(); j++){	// & 입력 단어의 각 자리마다 체크 (단어 길이만큼 반복)
                if (uppercase == inputWord.charAt(j) || lowercase == inputWord.charAt(j)) {
                    alpIndex[i] += 1;           // 걸리면 알파벳 배열 인덱스 값 +1 해주기
                }
            }
            if (alpIndex[i] > max) {            // 최대값 알아와서
                max = alpIndex[i];
            }
            uppercase += 1;			// char 자료형의 특성 활용
            lowercase += 1;
        }
        
        for (int i = 0; i < 26; i++){           // 배열에서 찾기 (반복문으로 돌려서 최대 등장횟수와 같은 것 cnt 반영)
            if (max == alpIndex[i]) {           // 만약 cnt 1이면 해당 알파벳 출력하고 
                cnt++;  
                if (cnt == 2){                  // 2가 되는 순간 break 걸어서 ? 출력
                    System.out.println("?");
                    break;
                }
                result = i;
            }
        }
        if (cnt == 1) {
        System.out.println((char)('A' + result));
        }
    }
}

배운점

자료형 char의 연산에 대하여 알 수 있었고, 자료형 변환 등을 좀 더 잘 활용할 수 있게 되었다.

 

 

»  제가 작성한 글의 내용중 잘못된 부분 및 수정해야 할 사항이 있으면 댓글로 말씀부탁드립니다.

확인 후 다시 공부하여 수정하도록 하겠습니다. 끝까지 읽어주셔서 감사합니다 !! 😀