프로그래머스 Lv0 - 등차수열의 특정한 항만 더하기, 주사위 게임 2, 원소들의 곱과 합, 이어 붙인 수, 마지막 두 원소

찐새·2023년 4월 25일
0

코딩테스트

목록 보기
32/53
post-thumbnail

등차수열의 특정한 항만 더하기

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

코드

function solution(a, d, included) {
    const arr = Array(included.length).fill(a).reduce((acc, cur, idx)=>{
        return [...acc, !!(idx) ? acc[acc.length-1]+d : cur]
    },[])

    return arr.reduce((acc,cur,i)=>included[i] ? acc + cur : acc + 0, 0)
}

풀이

공차 d가 누적된 배열을 만들고, 다시 reduce하여 합을 구했다.

참고

그럴 필요 없이 공차를 인덱스만큼 곱해서 합을 구하면 되었다. 풀고 나서 생각남.

function solution(a, d, included) {
    return included.reduce((acc,cur,i)=> cur ? acc + a + d * i : acc, 0)
}

주사위 게임 2

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

코드

function solution(a, b, c) {
    const setDice = [...new Set([a,b,c])]

    if (setDice.length === 3) return a + b + c
    if (setDice.length === 2) return (a + b + c) * (a**2 + b**2 + c**2)
    return (a + b + c) * (a**2 + b**2 + c**2) * (a**3 + b**3 + c**3);
}

풀이

Set을 이용해 같은 숫자가 몇 개인지 구분했다.

원소들의 곱과 합

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

코드

function solution(num_list) {
    const sum = num_list.reduce((acc,cur)=>acc+cur, 0);
    const multi = num_list.reduce((acc,cur)=>acc*cur,1);
    return multi < sum**2 ? 1 : 0;
}

풀이

누적값을 reduce로 계산했다.

이어 붙인 수

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

코드

function solution(num_list) {
    let odd = "", even = "";
    num_list.forEach((v)=>{
        if (!(v % 2)) {
            even += v+"";
        } else {
            odd += v+"";
        }
    })

    return +odd + +even;
}

풀이

odd(홀수)even(짝수)를 구분하여 이어붙인다. number타입에 +""를 하면 string 타입이 되고, string 앞에 + 붙이면 number가 된다.

마지막 두 원소

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

코드

function solution(num_list) {
    const [last1, last2, ...rest] = [...num_list].reverse();
    return [...num_list, last1 > last2 ? last1 - last2 : last1 * 2];
}

풀이

num_list 복사본을 reverse하여 구조분해할당으로 원소를 추출했다. 반환값 앞쪽에는 스프레드로 기존 num_list를 할당하고, 새로 추가되는 요소는 조건에 따라 추가했다.

profile
프론트엔드 개발자가 되고 싶다

0개의 댓글