java charAt() 문제

canyi·2023년 6월 16일
0

java m1

목록 보기
20/40

문제

알파벳 소문자로 된 문자를 입력 받고 알파벳이 몇번 나왔는지 출력.
나오지 않은 알파벳은 출력하지 않는다. 출력순서는 a부터 z까지

풀이


import java.util.Scanner;

public class 문제4 {
    public static void main(String[] args) {
       

        Scanner sc = new Scanner(System.in);
        String input = sc.nextLine();
        sc.close();

        //알파벳 횟수 배열 작성
        int[] count = new int[26];

        //charAt: 입력한 sc의 알파벳 문자를 한개씩 모두 출력
        for(int i = 0; i < input.length(); i++){
            char c = input.charAt(i);

            //해당 문자가 소문자의 a부터 z일 경우 count 배열의 index 증가 시킴
            if(c >= 'a' && c <= 'z'){
                count[c - 'a']++;
            }
        }

        //26번의 반복을 통해 알파벳 출력
        for(int i = 0; i < 26; i++){
            //count[i]: ㅊ알파벳 횟수
            //입력한 값의 저장한 배열이 값이 있을 경우 알파벳 출력
            if(count[i] > 0){
                //i 값을 알파벳의 ASCII 값으로 변환하여 문자로 출력
                char alphabet = (char)(i + 'a');
                System.out.println(alphabet + ":" + count[i]);
            }
        }
    }
}

설명

먼저, 코드의 실행을 위해 java.util.Scanner를 import하고, Scanner 객체를 생성합니다. 이 객체는 사용자로부터 입력을 받기 위해 사용됩니다. 그리고 System.out.print를 사용하여 "알파벳을 입력하세요: "라는 메시지를 출력합니다.

사용자가 입력한 값을 scanner.nextLine()을 사용하여 문자열로 입력받고, 입력이 완료되었으므로 scanner.close()를 호출하여 Scanner 객체를 닫습니다.

다음으로, 알파벳이 나타나는 횟수를 저장하기 위한 크기가 26인 count 배열을 생성합니다. 배열의 각 인덱스는 알파벳의 ASCII 값에서 'a'의 ASCII 값을 뺀 값으로 계산됩니다.

for 루프를 사용하여 입력받은 문자열을 한 문자씩 순회합니다. 문자열의 각 문자를 charAt 메서드를 사용하여 가져온 후, 해당 문자가 소문자 알파벳 범위인지 확인합니다. 소문자 알파벳 범위에 속하는 경우에만 count 배열의 해당 인덱스 값을 증가시킵니다.

알파벳의 횟수를 출력하기 위해 다시 한 번 for 루프를 사용합니다. 26번의 반복을 통해 각 알파벳에 대해 출력을 수행합니다. 만약 count[i] 값이 0보다 큰 경우에만 해당 알파벳을 출력합니다. count[i]는 해당 알파벳의 횟수를 의미하며, i 값을 알파벳의 ASCII 값으로 변환하여 문자로 출력합니다. 출력 형식은 "알파벳: 횟수"로 나타내어집니다.

이렇게 작성된 코드는 사용자로부터 알파벳 문자열을 입력받고, 각 알파벳이 나타나는 횟수를 계산하여 출력하는 기능을 수행합니다.

profile
백엔드 개발 정리

0개의 댓글