Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

joyful

[Javascript] 옷가게 할인 받기 - 프로그래머스 본문

프로그래머스

[Javascript] 옷가게 할인 받기 - 프로그래머스

조이풀한 개발자 2024. 3. 11. 20:54

문제출처: https://school.programmers.co.kr/learn/courses/30/lessons/120818

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

문제


 

 

 

 

풀이

function solution(price) {
    if (price >= 500000) {
        return Math.floor(price * 0.8)
    } else if (price >= 300000) {
        return Math.floor(price * 0.9)
    } else if (price >= 100000) {
        return Math.floor(price * 0.95)
    } else return price
}

 

 

초기 풀이 (오답)

function solution(price) {
    let answer = 0;
    if(price > 100000) {
        answer = price - price * 0.05;
    } else if (price > 300000) {
        answer = price - price * 0.1;
    } else if (price > 500000) {
        answer = price - price * 0.2
    }    
    return answer;
}

 

1. if문은 위에서부터 작동하여 조건이 맞을 시 바로 값을 return하는데, 10만원 이상일 때를 가장 우선적인 조건으로 두었다.

그래서 price가 30만원이나 50만원 이상일 때, 10만원 이상일 때의 조건에 충족하여 잘못된 값이 return되었다. 

2. 소수점 이하의 정수를 return 해야 해서 Math.floor 함수를 사용해야 했다. 

 

 

다른 사람 풀이

function solution(price) {
    if (price >= 500000)
        return parseInt(price*(1-0.2));

    if (price >= 300000)
        return parseInt(price*(1-0.1));

    if (price >= 100000)
        return parseInt(price*(1-0.05));  

    return price
}

초기 풀이와 비슷해서 조건문 순서만 적절히 넣었으면 정답이었을텐데 아쉬웠다. 

다른 사람들의 풀이도 꼭 참고해보자!