성장일기

내가 보려고 정리하는 공부기록

코딩테스트/프로그래머스 Lv.0

[프로그래머스] 문자 개수 세기 ( 대소문자 판별, 배열 값 채우기 ) - JAVA

와나나나 2023. 7. 21. 01:46
728x90

프로그래머스 _ 코딩 기초 트레이닝 DAY 11 - (1)

출처 - 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 함수를 작성해 주세요.

 

입력 #1 | "Programmers"

출력 #1 | [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0]


>> 풀이 <<

주어진 문장의 알파벳의 개수를 배열에 담는 문제이므로, A-Z, a-z의 아스키코드를 이용해 문제를 풀었다. 대문자와 소문자의 아스키코드는 연결되어있지 않으므로 대소문자 케이스를 분류해준다.

  • 대소문자 판별 -> Character.isUpperCase(), Character.isLowerCase()
    • boolean Character.isUpperCase(char c)은 c가 대문자일 때 true, 소문자일 때 false를 리턴한다. 
  • 배열 전체에 0 채워넣기 -> Arrays.fill()
    • Arrays.fill(arr, 채워넣을 거) 형태로 작성한다.
    • java.util.Arrays를 선언해야 한다.

import java.util.Arrays;

class Solution {
    public int[] solution(String my_string) {
        int[] answer = new int[52];
        int idx = 0;
        char c;
        Arrays.fill(answer,0);
        
        for (int i = 0 ; i < my_string.length() ; i++) {
            c = my_string.charAt(i);
            if(Character.isUpperCase(c)) {
                answer[c - 65]++;
            }
            else {
                answer[c - 71]++;
            }
        }
        
        return answer;
    }
}