728x90
프로그래머스 _ 코딩 기초 트레이닝 DAY 11 - (1)
출처 - https://school.programmers.co.kr/learn/courses/30/lessons/181902
문제 | 알파벳 대소문자로만 이루어진 문자열 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;
}
}
'코딩테스트 > 프로그래머스 Lv.0' 카테고리의 다른 글
[프로그래머스] n개 간격의 원소들 (Math클래스) - JAVA (0) | 2023.08.30 |
---|---|
[프로그래머스] 배열 조각하기 ( Arrays.copyOfRange ) - JAVA (0) | 2023.08.28 |
[프로그래머스] 접미사 배열 (Arrays.sort()) - JAVA (0) | 2023.07.13 |
[프로그래머스] 문자열 여러 번 뒤집기 (String.valueOf vs toString) - JAVA (0) | 2023.07.13 |
[프로그래머스] 9로 나눈 나머지 (char to int) - JAVA (0) | 2023.07.12 |