[JS] CDT 로 배우는 Javascript 기능과 기술들 [15.0]

김현수·2023년 10월 24일
0

cdt

목록 보기
15/51


📰 Coding Test 에서 익히는 javscript 기능과 기술 등


삼각형 완성조건 (2 - 프로그래머스)

function solution(sides) {
	return Math.min(...sides)*2-1;
}

Array 의 "every"

  • some 과 반대로 모두 조건에 만족하면 true
const nums = [5, 6, 7, 8];

console.log(nums.every((v) => v > 7)); // false
console.log(nums.every((v) => v > 4)); // true

저주의 숫자3 ( 프로그래머스 )

  • 3의 배수 : X
  • 3이 포함되어 있는 숫자 : X
 const dp = Array.from({length : 101}, (_,i) => i);
    const answer = dp.filter((num) => num % 3 !== 0 && !num.toString().includes("3"));
    
    return answer[n-1];

겹치는 선분의 길이 ( 프로그래머스 )

  • lines 의 각 요소의 범위는 (-100 ~ 100)
  • 200 크기의 요소를 가지는 배열 선언
  • a + 100 : 인덱스는 0부터 양의 정수
  • reduce 를 통해 현재 값이 1보다 크면 누적 값에 + 1
function solution(lines) {
	let line = new Array(200).fill(0);

    lines.forEach(([a, b]) => {
        for(; a < b; a++) line[a+100]++;
    });
    
    return line.reduce((a, c) =>  c > 1 ? a + 1 : a, 0);
}

유한소수 판별

  • 최대공약수 구하기
  • 최대공약수를 나눠서 기약분수로 만들기
  • 분모가 2와 5의 약수만 존재하는지 확인 (1, 해당 숫자 제외)
function solution(a, b) {
    var answer = 1;
    
    let gcd = 1;
    
    for(let i=2; i<=Math.min(a, b); i++){
        if(a % i === 0 && b % i === 0){
            gcd = i;
        }
    }
    
    const next_a = a / gcd;
    const next_b = b / gcd;
    
    for(let i=2; i<=next_b; i++){
        if(next_b % i === 0 && !(i % 2 === 0 || i % 5 ===0) ) {
            answer = 2;
            break;
        }
    }
    
    return answer;
}

Array 의 "map" 주의사항

  • Array(n)은 길이가 n인 배열을 생성, 하지만 각 요소는 undefined로 채움
  • .map() 은 정의된 값에만 동작
Array(3).map((_, idx) => idx); // [undefined, undefined, undefined]
[...Array(3)].map((_, idx) => idx); // [0, 1, 2]
  • 디스트럭처링을 사용하여 map 을 사용하는 이유
간단히 말해, [...Array(n)]을 사용하는 이유는 
길이가 n인 배열을 생성하고 이 배열의 각 요소를 
"정의된" 상태로 만들어 .map() 등의 
배열 메서드를 사용할 수 있게 하기 위함
profile
일단 한다

0개의 댓글