▶charCodeAt() 간단한 문제가 있어 정리해보고자 합니다.
문제설명
알파벳 대소문자로만 이루어진 문자열 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
입출력 예 & 설명
입출력 예 #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 합니다.
나의 풀이
먼저 이번 문제를 풀기 전 ▶charCodeAt()와 ▶fill() 함수에 대해서 알아야 합니다. https://pixx.tistory.com/23
2번째 줄에서 Array()와 fill() 메서드를 사용하여 52개의 배열을 생성해 주고, 0으로 채워줍니다.
그리고 charCodeAt()을 사용해서 문자열 my_string의 각 요소의 Unicode를 구해줍니다.
- 아스키코드
해당 code가 65 이상 90 이하면 대문자라는 뜻이고, 97 이상 122 이하면 소문자 알파벳이라는 뜻입니다.
그리고 문제에서 대문자(A-Z) 26개 + 소문자(a-z) 26개를 순서대로 담은 길이 52의 배열이기 때문에
대문자 A가 0번째 인덱스에 들어가야 하기 때문에 65를 빼줍니다. 그리고 소문자는 26개 다음의 인덱스에 와야 하기 때문에 소문자 a의 시작 인덱스인 97을 빼주고 26을 더해주었습니다.
my_string의 요소를 대문자와 소문자를 if문으로 구분하여 해당 인덱스 범위에 있으면 1을 더해주어 마무리해 주었습니다.
charCodeAt() 메서드를 모르면 아래의 코드처럼 직접 문자열을 지정해 줄 수 있지만 번거롭기 때문에 알맞은 함수를 알면 보다 쉽게 해결할 수 있습니다.
let alph = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
'Coding Test > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 문자열 뒤집기 (JavaScript) (1) | 2024.02.17 |
---|---|
[프로그래머스] 조건 문자열 (JavaScript) (1) | 2024.02.16 |
[프로그래머스] 조건에 맞게 수열 변환하기 2 (JavaScript) (0) | 2024.02.12 |
[프로그래머스] 리스트 자르기 (JavaScript) (0) | 2024.02.12 |
[프로그래머스] 문자열 묶기 (JavaScript) (1) | 2024.02.11 |