😈 공배수
📗 문제 설명
알파벳 대소문자로만 이루어진 문자열 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 합니다.
💎나의 풀이
문제의 요구 사항은 알파벳의 몇번 들어 갔는지의 배열이다.
정규식으로 조건 작성후에
현재 문자를 대문자로 변환하고, ASCII 코드를 이용하여 알파벳 'A'부터의 상대적인 위치를 계산하자const index = char.toUpperCase().charCodeAt(0) - 'A'.charCodeAt(0) + (char < 'a' ? 0 : 26)
. char < 'a' 조건은 현재 문자가 대문자인지를 확인하고 만약 소문자라면 추가적으로 26을 더하여 소문자의 상대적인 위치를 계산하고 카운트를 올려주자.
후에 배열 생성하면 끗
const solution = s => [...s].reduce((count, char) => {
if (/[A-Za-z]/.test(char)) {
const index = char.toUpperCase().charCodeAt(0) - 'A'.charCodeAt(0) + (char < 'a' ? 0 : 26);
count[index]++;
}
return count;
}, Array(52).fill(0));
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 😈] JavaScript 커피 심부름 (0) | 2023.10.16 |
---|---|
[프로그래머스 😈] JavaScript 조건에 맞게 수열 변환하기 2 (0) | 2023.10.16 |
[프로그래머스 😈] JavaScript 왼쪽 오른쪽 (0) | 2023.10.15 |
[프로그래머스 😈] JavaScript 연속된 수의 합 (1) | 2023.10.15 |
[프로그래머스 😈] JavaScript 문자열 여러 번 뒤집기 (1) | 2023.10.14 |