새소식

알고리즘 테스트 ⏲/프로그래머스

[프로그래머스] 시소 짝꿍 풀이 / JavaScript

  • -

 

작성 코드 (1차 시도 / 통과)

function solution(weights) {
    let result = 0
    const table = Array(4001).fill(0)
    const isInt = (n) => n % 1 === 0 ? n : 0 // 실수 판별
    weights.forEach(w => {
        result += table[w] + table[w * 2] // case 1, case 2
        if (isInt(w / 2)) result += table[w / 2] // case 3
        if (isInt(w * 2 / 3)) result += table[w * 2 / 3] // case4
        if (isInt(w * 3 / 2)) result += table[w * 3 / 2] // case5
        if (isInt(w * 3 / 4)) result += table[w * 3 / 4] // case6
        if (isInt(w * 4 / 3)) result += table[w * 4 / 3] // case7
        table[w] += 1
    })
    return result
}

구현 로직

문제에서 말하는 균형이 맞는 비율은 중복해서 총 7가지 입니다.

1:1, 1:2, 2:1, 2:3, 3:2, 3:4, 4:3.

weights를 순회할 때마다 해당 몸무게 값에 해당하는 인덱스를 1증가 하고 비율에 맞는 대상을 모두 찾아 저장된 값을 결괏값에 더해주면 됩니다.

isInt는 해당 값이 정수인지 아닌지를 판별합니다. 몸무게는 정수라고 하였으니 나눠진 값이 소수인 경우에는 계산하지 않습니다.

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.