728x90
프로그래머스 0단계 문제인 `옷 가게 할인 받기` 문제를 풀어보았다.
부분점수에만 그쳐서 어떤 부분이 문제였는 지를 파악해보았다.
// 나의 코드
function solution(price) {
let answer= 0;
if (price >= 100000) {
answer = Math.floor(price * 0.95);
} else if (price >= 300000) {
answer = Math.floor(price* 0.9);
} else (price >= 500000) {
answer = Math.floor(price * 0.8);
}
return answer;
}
[배운점]
1. 조건의 순서(가격 큰 순서대로)
현재 조건의 순서로 인해 300,000 이상 또는 500,000 이상의 경우에 첫 번째 조건인 price >= 100000이 참이 되기에, 뒷 부분의 조건은 더이상 확인되지 않는다. 따라서 가격이 큰 순서부터 조건의 순서를 세워야 한다.
2. else 문은 어떤 조건도 충족 하지 않을 때 사용
else문은 어떤 조건도 만족하지 않을 때이므로. else if를 사용해야 하는 점을 다시 복습했다.
3. answer= price 와 같이 기본값 설정
만약 price가 100,000 미만이면, 내 코드에 따르면 answer의 값은 0이 반환된다. 조건을 충족하지 않으면 할인 없이 원래의 가격을 반환해야 하므로 기본값을 원래 가격으로 설정해야 한다.
// 정답
function solution(price) {
let answer = price;
if (price >= 500000) {
answer = Math.floor(price * 0.8);
} else if (price >= 300000) {
answer = Math.floor(price * 0.9);
} else if (price >= 100000) {
answer = Math.floor(price * 0.95);
}
return answer;
}
728x90
반응형
'코딩테스트(JavaScript) > 코딩테스트 입문' 카테고리의 다른 글
프로그래머스-짝수 홀수 개수 (0) | 2023.08.20 |
---|---|
프로그래머스-직각삼각형 출력하기 (0) | 2023.08.18 |
프로그래머스- 저주의 숫자 3 (0) | 2023.07.20 |
프로그래머스- 최빈값 구하기 (0) | 2023.07.20 |
프로그래머스- 로그인 성공? (0) | 2023.07.20 |