[프로그래머스 코딩기초 트레이닝] 문자 개수 세기 (JAVA)
문제 설명
알파벳 대소문자로만 이루어진 문자열 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
입출력 예
my_string | result |
"Programmers" | [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] |
입출력 예 설명
입출력 예 #1
예제 1번의 my_string에서 'P'가 1개, 'a'가 1개, 'e'가 1개, 'g'가 1개, 'm'이 2개, 'o'가 1개, 'r'가 3개, 's'가 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]를 return 합니다.
풀이
-> 알파벳 a-z, A-Z의 갯수가 52개이다. 해당 개수만큼 answer을 초기화시켜준다. 그 후에 대소문자를 구분해서 해당 배열의 index를 잡아서 1씩 증가시켜준다. 여기서 a-z와 A-Z 사이에 다른 문자도 있다는 것을 몰라서 한번에 처리하려다 헤맸다. 기억해두도록 하자.
알파벳은 65부터 90까지의 숫자로, 소문자 알파벳은 97부터 122까지의 숫자로 표현
코드
class Solution {
public int[] solution(String my_string) {
int length = my_string.length();
int[] answer = new int[52];
for (int i = 0; i < length; i++) {
char c = my_string.charAt(i);
if (c >= 'A' && c <= 'Z') {
// 대문자 알파벳인 경우
answer[c - 'A']++;
} else if (c >= 'a' && c <= 'z') {
// 소문자 알파벳인 경우
answer[c - 'a' + 26]++;
}
}
return answer;
}
}