。゚(*´□`)゚。

코딩의 즐거움과 도전, 그리고 일상의 소소한 순간들이 어우러진 블로그

ㅋㅌ

문자 개수 세기

quarrrter 2023. 7. 13. 17:34
class Solution {

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

answer[my_string.charAt(i) - 'A']++는 대문자 알파벳의 등장 횟수를 저장하기 위한 코드입니다. 이를 이해하기 위해서는 아스키 코드에 대한 이해가 필요합니다.

아스키 코드는 문자를 숫자로 표현하는 방식으로, 대문자 A부터 Z까지는 연속적으로 번호가 할당되어 있습니다. 'A'의 아스키 코드 값은 65이고, 'B'는 66, 'C'는 67, ..., 'Z'는 90입니다.

따라서 my_string.charAt(i) - 'A'는 주어진 문자 my_string.charAt(i)에서 'A'의 아스키 코드 값을 빼는 것입니다. 이를 통해 대문자 알파벳 문자에 해당하는 값의 범위가 0부터 25로 매핑됩니다. 예를 들어, 'A'의 아스키 코드 값인 65에서 'A'의 아스키 코드 값인 65를 뺀 결과는 0입니다. 'B'의 아스키 코드 값인 66에서 'A'의 아스키 코드 값인 65를 뺀 결과는 1입니다. 이런식으로 대문자 알파벳에 해당하는 값의 범위는 0부터 25까지 연속적으로 매핑됩니다.

그래서 answer[my_string.charAt(i) - 'A']++는 대문자 알파벳 my_string.charAt(i)의 등장 횟수를 answer 배열의 해당 인덱스에 1을 증가시키는 것을 의미합니다. 예를 들어, 'A'가 주어진 문자열에서 등장하면 answer[0]의 값을 1 증가시킵니다.

마찬가지로 소문자 알파벳의 등장 횟수를 저장하기 위해서는 'a'를 기준으로 매핑하면 됩니다. 'a'의 아스키 코드 값은 97이고, 소문자 알파벳은 'a'부터 'z'까지 연속적으로 할당되어 있습니다. 따라서 my_string.charAt(i) - 'a' + 26는 소문자 알파벳에 해당하는 값의 범위를 26부터 51까지 매핑시킵니다. 예를 들어, 'a'가 주어진 문자열에서 등장하면 answer[26]의 값을 1 증가시킵니다.

이를 통해 answer 배열은 대문자 알파벳과 소문자 알파벳의 등장 횟수를 저장하게 됩니다.

'ㅋㅌ' 카테고리의 다른 글

ArrayList<Integer> resultList = new ArrayList<>();  (0) 2023.07.16
String.format  (0) 2023.07.14
BigInteger  (0) 2023.07.12
Integer.toBinaryString()  (0) 2023.07.12
빈 배열에 추가, 삭제하기  (0) 2023.07.09