[프로그래머스 | Javascript] 코딩테스트 입문 - 삼각형의 완성조건 (2)

박기영·2022년 11월 15일
0

프로그래머스

목록 보기
94/159
post-custom-banner

solution

function solution(sides) {
    const long = Math.max(...sides);
    const longIndex = sides.indexOf(long);
    const shortIndex = longIndex === 0 ? 1 : 0;
    
    const longSide = sides[longIndex];
    const shortSide = sides[shortIndex];
    
    let ans = longSide - (longSide - shortSide + 1) + 1;
    
    ans += longSide + shortSide - longSide - 1;
    
    return ans;
}

음...정말 직관적인 풀이법이다.
예시 입출력값으로 주어진 것을 보고 그대로 코드로 작성하면 된다.

연산 부분을 더 줄이면 이렇게 된다.

function solution(sides) {
    const long = Math.max(...sides);
    const longIndex = sides.indexOf(long);
    const shortIndex = longIndex === 0 ? 1 : 0;
    
    const longSide = sides[longIndex];
    const shortSide = sides[shortIndex];
    
    let ans = shortSide;

    ans += shortSide - 1;
    
    return ans;
}

결과적으로 입력값으로 주어진 배열에서 (더 작은 값 * 2) - 1이 답이라는 것이다.
그래서 극한으로 줄이면 이렇게 된다.

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

아무래도 수학적인 지식을 가지고 쉽게 해결 할 수 있는 문제인 것 같은데,
꼭 그런 지식이 없더라도, 코드를 작성하고 공통부분을 줄이면 저런 코드를 만들어낼 수 있게된다...

profile
나를 믿는 사람들을, 실망시키지 않도록
post-custom-banner

0개의 댓글