문제

문제 링크
image

나의 풀이

아이디어

  • 중첩된 삼항 연산자로 큰 금액일 때부터 할인율을 적용해 리턴한다.
  • 소수점 이하를 버려야 하므로 Math.trunc 나 비트 연산자, 틸트 연산자 등을 활용한다.

    코드

    function solution(price) {
      return price * (price >= 500000 ? 0.8 : price >= 300000 ? 0.9 : price >= 100000 ? 0.95 : 1) >> 0;
    }
    

다른 사람 풀이

const solution=(p)=>~~(p*[1, 0.95, 0.95, 0.9, 0.9, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8][~~(p/100000)])

0~9부터 할인율을 배열로 넣어두고, ~~(p/100000)로 배열의 인덱스를 계산하여 p와 곱하면 할인율이 적용된 값이 나온다.