프로그래머스 코딩 테스트 연습 문제 Lv.0 JS - 5문제(잘라서 배열로 저장하기, 7의 개수, 문자열 정렬하기 (2), 세균 증식, 제곱수 판별하기)

찐새·2023년 4월 3일
0

코딩테스트

목록 보기
22/53
post-thumbnail

1. 잘라서 배열로 저장하기

https://school.programmers.co.kr/learn/courses/30/lessons/120913

function solution(my_str, n) {
  const answer = [];
  let start = 0,
    end = n;
  for (let i = 0; i < my_str.length / n; i++) {
    answer.push(my_str.slice(start, end));
    start += n;
    end += n;
  }
  return answer;
}
  • 시작 인덱스와 끝 인덱스를 n만큼 늘리며 slice를 배열에 저장했다.
  • 정규식를 사용하고 싶었으나 방법을 몰라 헤맸다. 문제 해결 후 다른 사람 풀이를 참고했다.
function solution(my_str, n) {
  return my_str.match(new RegExp(`.{1,${n}}`, "g"));
}
  • new RegExp에 백틱으로 감싼 리터럴을 작성하면 변수를 정규식에 포함할 수 있다.

2. 7의 개수

https://school.programmers.co.kr/learn/courses/30/lessons/120912

function solution(array) {
  let answer = 0;
  array.forEach((i) => {
    answer += [...i.toString()].filter((x) => x.match(/7/g)).length;
  });
  return answer;
}
  • array의 요소를 문자로 치환한 배열로 만든 후 filter를 통해 7만 걸러낸다.
  • 걸러낸 7의 개수를 answer에 더한다.
function solution(array) {
  return array.join("").split(/7/g).length - 1;
}
  • array를 문자열로 만든 후 7을 구분자로 split해 총 길이에서 -1한다.

3. 문자열 정렬하기 (2)

https://school.programmers.co.kr/learn/courses/30/lessons/120911

function solution(my_string) {
  return [...my_string.toLowerCase()].sort().join("");
}
  • 소문자로 변경한 문자열을 배열로 치환 후 sort하고, 다시 문자열로 재조합한다.

4. 세균 증식

https://school.programmers.co.kr/learn/courses/30/lessons/120910

function solution(n, t) {
  return Math.pow(2, t) * n;
}
  • 시간 당 두 배씩 증식하므로 2의 t제곱한 후 세균 마리 수 n을 곱한다.
  • 2진수 연산이기 때문에 비트 연산자시프트를 사용할 수도 있다고 한다.
    • n << t : 왼쪽 시프트 연산자로, 32비트 nt만큼 왼쪽으로 옮기고, 움직인 만큼 0을 채운다.
    • ex) 2 << 2 === 8

5. 제곱수 판별하기

https://school.programmers.co.kr/learn/courses/30/lessons/120909

function solution(n) {
  return !(n % Math.sqrt(n)) ? 1 : 2;
}
  • 제곱수이므로 sqrt로 제곱근을 찾는다.
  • n이 제곱근으로 나눠 떨어지면 1을 리턴, 아니면 2를 리턴한다.
  • 나머지 판별 대신 isInteger를 사용할 수도 있음을 배웠다.
profile
프론트엔드 개발자가 되고 싶다

0개의 댓글