1. 문자 개수 세기
목표 : 대소문자 알파벳 갯수 세기
//입력
"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]
function solution(my_string) {
const counts = new Array(52).fill(0);
for (let x of my_string) {
const charCode = x.charCodeAt();
if (65 <= charCode && charCode <= 90) {
counts[charCode - 65] += 1;
} else if (97 <= charCode && charCode <= 122) {
counts[charCode - 97 + 26] += 1;
}
}
return counts;
}
- 알파벳의 갯수를 셀때 유니코드의 값을 가져오는
charCodeAt()을 사용하면 쉽게 할 수 있다.
- 대소문자 알파벳을 합친 갯수는 52개이므로 52개의 정수배열을 모두
0으로 채우고 counts로 선언한다.
my_string을 순회하면서 각 문자들의 유니코드를 가져온다.
- 가져온 유니코드의 값이
65이상이고 90이하이면 대문자 이므로, counts의 인덱스를 가져온 유니코드 값 - 시작하는 유니코드 값(65) 으로 계산하여 해당하는 알파벳의 인덱스 자리에 +1을 해준다.
- 가져온 유니코드의 값이
97이상이고 122이하이면 소문자 이므로, counts의 인덱스를 가져온 유니코드 값 - 시작하는 유니코드 값(97) + 앞선 대문자들의 갯수(26) 으로 계산하여 해당하는 알파벳의 인덱스 자리에 +1을 해준다.
< ASCII 코드표 >
2. 배열 만들기 1
목표 : 1이상 n이하 정수중 k의 배수로 배열 만들기
//입력(n, k)
10, 3
//출력
[3, 6, 9]
function solution(n, k) {
var answer = [];
for(let i = k; i<=n; i+=k){
answer.push(i);
}
return answer;
}
- 반환할 배열
answer을 선언하고, k의 배수를 구하는 것이기 때문에, i는 k부터 시작한다.
- 증감식은
k를 더해주며, n까지 반복하고, i를 answer에 push()해준다.
3. 글자 지우기
목표 : 문자열에서 특정 인덱스의 글자를 지우고, 이어붙이기
//입력(my_string, indices)
"apporoograpemmemprs", [1, 16, 6, 15, 0, 10, 11, 3]
//출력
"programmers"
function solution(my_string, indices) {
let buffer = my_string.split("");
for(let x of indices){
buffer[x] ="";
}
return buffer.join("");
}
buffer에 my_string을 문자배열로 변환한 결과를 저장한다.
indices의 요소갯수만큼 반복하면서, 정수배열 indices의 요소인 x를 buffer의 인덱스로 지정한다.
- 그 인덱스에 해당하는것을 빈문자열로 바꾸고
join()을 사용하여 이어붙인다음 반환한다.
4. 카운트 다운
목표 : 시작부터 끝까지 1씩감소되는 카운터 배열을 반환
//입력(start, end)
10, 3
//출력
[10, 9, 8, 7, 6, 5, 4, 3]
function solution(start, end) {
var answer = [];
for(let i = start; i>=end; i--){
answer.push(i)
}
return answer;
}
- 반환할
answer 배열을 선언하고 i=start 부터 i>=end가 만족할 때 까지 반복하면서 i는 1씩 감소한 결과를 answer에 push한다.
5. 가까운 1 찾기
목표 : 0또는 1로 이루어진 배열에서 정수 idx보다 크고, 배열의 값이 1인 인덱스 번호를 반환
//입력(arr, idx)
[0, 0, 0, 1], 1
//출력
3
function solution(arr, idx) {
var answer = -1;
for(var i =idx;i<arr.length;i++){
if(arr[i]==1){
return i;
}
}
return answer;
}
- 변수
answer를 선언하는데, 만족하는 값을 찾지못하면 -1을 반환하는 solution함수의 조건에 따라 default 값은 -1로 선언한다.
i가 정수 idx부터 시작하여, arr의 길이만큼까지 반복한다.
- 배열을 순회하면서
arr[i]가 1인 경우를 찾으면, 해당 인덱스를 지정하고 있는 i를 반환한다.
- 만족하는 결과가 없으면 default값인
-1을 반환한다.