코딩테스트

문자 개수 세기, 프로그래머스 코딩테스트 JAVA

daeyun대윤 2024. 2. 28. 07:01

문자 개수 세기 JAVA

 

출처 : https://school.programmers.co.kr/learn/courses/30/lessons/181902

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

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

 

class Solution {
    public int[] solution(String my_string) {
        int[] answer = new int[52];
        char[] ca = my_string.toCharArray();
        
        for(int i=0; i<ca.length; i++){
            if(Character.isUpperCase(ca[i])){             
                answer[(int)ca[i]-'A']++; 
            }else{
                answer[(int)ca[i]-'a'+26]++; 
            }
        }

        return answer;
    }
}

 

처음에 접근했을 때는. ++ 연산자 이 부분을 생각 못하고 answer[(int)ca[i]-'A'] = 1; 이렇게 했다보니.. answer 배열 인덱스에 맞게 1이 들어가긴 했으나... 알파벳 별로 카운트는 못하는 상황이었다. chat GPT에 물어봤더니 ++ 연산자 쓰라고 알려줌.. 오....! ㅎㅎㅎ 쉬운 것 같으나.. 생각해내기 매우 어려웠음..

 

아스키코드에서 대문자 A는 65, 소문자 a는 97이고, 이 두 숫자간의 차이가 26이라서 소문자 일때는 'a'에 다시 +26을 해주었다.

 

728x90
300x250