Coding Test/프로그래머스 Lv.0

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

sangwoo_rhie 2023. 6. 1. 08:02

https://school.programmers.co.kr/learn/courses/30/lessons/120818

 

제한사항 ; 소수점 이하를 버린 단위를 return.

 

나의 풀이 1.

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

if~ else if 문 사용. 각각

(1) 10만 미만일때,

(2) 10만 이상~ 30만 이하,

(3) 30만 이상~ 50만 미만,

(4) 50만 이상일때로 나누었고

그 결과값을 소수점 내림으로 Math.floor로 해서 할인된 가격으로 return 도출했으나 오답.

 

테스트실행결과 2개중 하나는 정답, 하나는 오답이었는데 사유는

 

입력값 〉 580000
기댓값 〉 464000
실행 결과 〉 실행한 결괏값 551000이 기댓값 464000과 다릅니다.

 

즉 580,000원 짜리에 첫번째 if문이 적용됨.

 

price라는 변수를 특정값 이상 , 특정값 이하 두개의 조건이 한번에 안걸리는것 같았다.

그래서 다시 큰 수부터 식 세움.

 

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;
    }
}