프로그래머스 Day - 11

ᵁ-ᴷᴺᴼᵂᴺ·2023년 6월 5일
post-thumbnail

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의 배수를 구하는 것이기 때문에, ik부터 시작한다.
  • 증감식은 k를 더해주며, n까지 반복하고, ianswerpush()해준다.

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("");
}
  • buffermy_string을 문자배열로 변환한 결과를 저장한다.
  • indices의 요소갯수만큼 반복하면서, 정수배열 indices의 요소인 xbuffer의 인덱스로 지정한다.
  • 그 인덱스에 해당하는것을 빈문자열로 바꾸고 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씩 감소한 결과를 answerpush한다.

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을 반환한다.
profile
ΔIM ΩΠ ҒULLSTΔCҜ

0개의 댓글