프로그래머스 코딩 테스트 연습 문제 Lv.0 JS - 5문제(가까운 수, 삼각형의 완성조건 (1), 중복된 문자 제거, k의 개수, A로 B 만들기)

찐새·2023년 4월 9일
0

코딩테스트

목록 보기
26/53
post-thumbnail

가까운 수

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

function solution(array, n) {
    return array.sort((a,b)=>b-a).reduce((acc,cur)=>(Math.abs(n-cur)) <= Math.abs(n-acc) ? cur : acc);
}
  • 처음에는 forEach로 하나씩 비교했다가 reduce가 생각나 수정했다.
  • 숫자 간 차가 적은 요소가 누산기에 저장된다.
  • 차가 같으면 작은 숫자를 반환해야 하므로 배열을 내림차순으로 정렬했다.

삼각형의 완성조건 (1)

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

function solution(sides) {
    sides = sides.sort();
    return sides[2] < sides[0] + sides[1] ? 1 : 2;
}
  • 오름차순 정렬해서 조건에 맞게 삼항 연산한다.

중복된 문자 제거

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

function solution(my_string) {
    return [...new Set(my_string)].join("")
}
  • 중복 제거이므로 Set을 사용했다.
  • 유사 배열 객체라 스프레드 문법 가능.

k의 개수

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

function solution(i, j, k) {
    return [...Array(j+1).keys()].slice(i).join("").split("").filter((v)=>v===String(k)).length;
}
  • 0부터 j+1까지 배열 만들고, i부터 끝까지 슬라이싱하여 문자열로 변환한다.
  • 다시 split으로 배열 만들어서 k와 같은 요소만 남겨 길이를 반환했다.
  • 다른 풀이 보니, filli 채우고, 인덱스를 더해서 새 배열 만드는 게 더 보기 좋은 듯.
    • Array(j-i+1).fill(i).map((v,i)=>v+i).join('').split(k).length-1

A로 B 만들기

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

function solution(before, after) {
    return [...before].sort().join("") === [...after].sort().join("") ? 1 : 0;
}
  • 요소가 같으면 순서를 바꿔서 만들 수 있으므로, 요소가 같은지 비교했다.
profile
프론트엔드 개발자가 되고 싶다

0개의 댓글