본문 바로가기
코딩테스트/프로그래머스

[프로그래머스] 위클리 챌린지 > 1주차 - 자바스크립트

by 핸디(Handy) 2021. 8. 17.

[ 문제 설명 ]

 

코딩테스트 연습 - 1주차

새로 생긴 놀이기구는 인기가 매우 많아 줄이 끊이질 않습니다. 이 놀이기구의 원래 이용료는 price원 인데, 놀이기구를 N 번 째 이용한다면 원래 이용료의 N배를 받기로 하였습니다. 즉, 처음 이

programmers.co.kr


[ 아이디어 ]

  1. 생각의 흐름대로 한번 탈때마다 매번 증가된 가격을 더하여 비교하는 방법
  2. 가우스의 일화를 토대로 빠르게 구하는 방법

그림 1. 수학자 가우스의 어린시절 일화

원래라면 1번으로 구현을 해본 다음에 2번으로 넘어가는 흐름을 코테를 연습해봤겠지만 이번엔 바로 2번 아이디어로 구현을 해보았다.

[ 코드 ]

function solution(price, money, count) {
    let answer = -1;
    let total = count * ( count + 1) / 2; // 전체 수행 횟수(가우스's 아이디어)
    if ( money >= price * total) { // 충분한 가격임으로 탈 수 있다.
        answer = 0;
    }
    else {
        answer = price * total - money // 부족한 가격을 반환한다.
    }
    return answer;
}

 

[ 팁 ]

학창 시절에 읽었던 수학책을 잘 상기해보자. 이 일화는 등차수열? 이 부분에서 나왔던거같다.

나는 그때 당시 나보다 몇 살이나 어린 10살의 가우스보다 못한 머리를 가지고 있구나 실망했던 기억이 있다.

댓글