프로그래머스 코딩 테스트 연습 문제 Lv.0 JS - 5문제(이진수 더하기, 치킨 쿠폰, 로그인 성공?, 등수 매기기, 특이한 정렬)

찐새·2023년 4월 10일
0

코딩테스트

목록 보기
27/53
post-thumbnail

이진수 더하기

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

function solution(bin1, bin2) {
  return (Number.parseInt(bin1, 2) + Number.parseInt(bin2, 2)).toString(2);
}
  • Number.parseInt의 두 번째 인자로 기수법을 정할 수 있다.
  • Number.toString의 인자로 기수법을 정한 후 문자열을 반환한다.

치킨 쿠폰

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

function solution(chicken) {
  if (parseInt(chicken / 10) < 1) return 0;
  return (
    parseInt(chicken / 10) + solution(parseInt(chicken / 10) + (chicken % 10))
  );
}
  • 쿠폰으로 받는 치킨의 수를 계산하면 된다고 생각해서 재귀 함수로 풀었다.
  • (왜때문인지 모르겠지만) 쿠폰으로 주문한 치킨도 쿠폰을 발급하므로, 발급된 쿠폰(parseInt(chicken / 10)) + 남은 쿠폰(chicken % 10)을 더해 재귀로 보냈다.
  • 다른 사람 풀이를 보니 (chicken-1)/9를 하던데, 이유를 이해하지 못했다. 10마리째는 무조건 1마리 서비스니까 9로 나눈 것 같고, -1은 왜지?
  • ~~(double tilde) 연산자로 푼 사람도 있었다. 새로운 걸 또 배웠다.

로그인 성공?

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

function solution(id_pw, db) {
  const idCheck = db.filter(([id, _]) => id_pw.includes(id));
  const pwCheck = idCheck.filter(([_, pw]) => id_pw.includes(pw));
  return !idCheck.length ? "fail" : !pwCheck.length ? "wrong pw" : "login";
}
  • id가 있는 배열을 idCheck으로 걸러내고, idCheck에서 다시 pw가 있는 배열을 걸러냈다.
  • idCheck이 빈 배열이면 fail, pwCheck이 빈 배열이면 wrong pw, 둘 다 요소가 있으면 login으로 처리했다.
  • Map으로 처리한 사람도 있었다. 리마인드.

등수 매기기

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

function solution(score) {
  const avg = score.map((v) => v.reduce((acc, cur) => acc + cur) / v.length);
  const copySort = [...avg].sort((a, b) => b - a);
  return avg.map((v) => copySort.indexOf(v) + 1);
}
  • 평균 배열을 구해서 내림차순 정렬한 복제본을 만들었다.
  • indexOfcopySort에서 avg 요소의 첫 번째 인덱스를 구한 후 1 더해줬다.

특이한 정렬

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

function solution(numlist, n) {
  return numlist.sort((a, b) => {
    const x = Math.abs(n - a);
    const y = Math.abs(n - b);
    if (x === y) return b - a;
    return x - y;
  });
}
  • 기준 n과 거리가 같은 요소라면 내림차순으로, 아니라면 거리가 짧은 순으로 정렬했다.
  • 능지 부족으로 한 줄 되는 걸 늘여서 작성했다. ㄲㅂ
profile
프론트엔드 개발자가 되고 싶다

0개의 댓글