프로그래머스 문자 개수 세기

KIMYEONGJUN·2026년 6월 7일
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

알파벳 대소문자로만 이루어진 문자열 my_string이 주어질 때, my_string에서 'A'의 개수, my_string에서 'B'의 개수,..., my_string에서 'Z'의 개수, my_string에서 'a'의 개수, my_string에서 'b'의 개수,..., my_string에서 'z'의 개수를 순서대로 담은 길이 52의 정수 배열을 return 하는 solution 함수를 작성해 주세요.

내가 이 문제를 보고 생각해본 부분

Main43 클래스의 main 메서드는 프로그램의 시작점이며, 여기서 Solution7 클래스의 solution 메서드를 호출한다.
solution 메서드는 입력 문자열을 받아서 길이 52짜리 배열을 만든다. 배열의 0~25번 인덱스는 대문자 'A'부터 'Z'까지, 26~51번 인덱스는 소문자 'a'부터 'z'까지 각각의 개수를 저장한다.
문자열의 각 문자를 한 글자씩 검사한다. 문자 ch가 대문자면 'A'의 아스키 코드 값을 빼서 인덱스를 결정하고, 그 위치의 값을 1 증가시킨다.
만약 소문자라면 'a'의 아스키 코드 값에서 빼고 26을 더해 인덱스를 구해서 그 위치의 값을 1 증가시킨다.
이렇게 모든 문자를 검사한 후, 결과 배열을 호출한 쪽으로 반환한다.
main에서는 반환된 배열을 받아서 각 알파벳의 개수를 공백으로 구분해 출력한다.

코드로 구현

class Solution {
    public int[] solution(String my_string) {
        int[] answer = new int[52]; 
        for (int i = 0; i < my_string.length(); i++) {
            char ch = my_string.charAt(i);
            if (ch >= 'A' && ch <= 'Z') {
                answer[ch - 'A']++;
            } else if (ch >= 'a' && ch <= 'z') {
                answer[ch - 'a' + 26]++;
            }
        }
        return answer;
    }
}

프로그래머스 코드

package programmers;

// 프로그래머스 문자 개수 세기
public class Main43 {
    public static void main(String[] args) {
        Solution7 sol = new Solution7();
        String my_string = "Programmers";

        int[] result = sol.solution(my_string);

        // 결과 출력
        for (int count : result) {
            System.out.print(count + " ");
        }
        System.out.println();
    }
}

// Solution 클래스에 문제 해결 메서드 작성
class Solution7 {
    public int[] solution(String my_string) {
        int[] answer = new int[52];
        for (int i = 0; i < my_string.length(); i++) {
            char ch = my_string.charAt(i);
            if (ch >= 'A' && ch <= 'Z') {
                answer[ch - 'A']++;
            } else if (ch >= 'a' && ch <= 'z') {
                answer[ch - 'a' + 26]++;
            }
        }
        return answer;
    }
}

위에 있는 코드를 변경한 코드

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글