[코테 풀이] 문자 개수 세기

시내·2023년 12월 14일
0

신박하게 푼 것 같은 문제,,지만
어쨌든 풀었습니다?

Q) 문자 개수 세기

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

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

import java.util.*;

class Solution {
    public int[] solution(String my_string) {
       int[] answer = new int[52];
        Map<Character, Integer> mapping = new HashMap<>();
        for (int i = 0; i < my_string.length(); i++) {
            mapping.put(my_string.charAt(i), mapping.getOrDefault(my_string.charAt(i), 0) + 1);
        }
        for (Character c : mapping.keySet()) {
            if (Character.isUpperCase(c)) answer[c - 65] = mapping.get(c);
            else if (Character.isLowerCase(c)) answer[c - 97 + 26] = mapping.get(c);
        }
       
        return answer;
    }
}

1) 수업시간에 배운 HashMap 야무지게 써먹기.
주어진 my_String의 char를 한 개씩 돌면서 세준다.
Map에는 알파벳이 key로, 반복 횟수가 value로 들어간다.

2) 그 다음, ascii 코드 값을 활용해서 대문자일 경우, A의 value값은 인덱스 0에 들어갈 수 있도록, 소문자일 경우, a의 value값은 인덱스 26에 들어갈 수 있도록 각 숫자를 빼준다.

이것도 지난 번 풀다가 잘 안 풀려서 아껴둔 문제였다.
다시 푸니까 되더라!!

모르겠어서 풀이를 찾아보는 짓은 하지 않을거댜 아마
문제가 아까우니까 ~🤓

profile
contact 📨 ksw08215@gmail.com

0개의 댓글