본문 바로가기
코딩테스트/자바 Level 0

[Java] 문자 개수 세기

by onggury 2023. 7. 26.

문제

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

 

 

제한사항

  • 1 ≤ my_string 의 길이 ≤ 1,000

 

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' < 0) {
                answer[ch - 'A']++;
                continue;
            }
            answer[ch - 'a' + 26]++;
        }
        return answer;
    }
}

생각 그대로 코드로 옮기다보니 조건문을 굳이 저렇게 쓸 필요가 있을까 싶었다. 소문자 아스키코드 값 > 대문자 아스키코드 값이라서 주어진 문자 ch가 소문자 문자와 뺄셈을 한다면 무조건 음수가 나오기 때문에 대문자 구별을 이렇게 했다.

(사실 isUpperCase() 메서드를 써도 상관없긴하지만 이번엔 안쓰는 방향으로 해결해보고 싶었다.)

아무튼 그냥 if(ch < 'a') 라고 해도 통과된다.

 

 

 

 

출처

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