옷가게 할인 받기
머쓱이네 옷가게는 10만 원 이상 사면 5%, 30만 원 이상 사면 10%, 50만 원 이상 사면 20%를 할인해줍니다. 구매한 옷의 가격 price가 주어질 때, 지불해야 할 금액을 return 하도록 solution 함수를 완성해보세요.
- 10 ≤ price ≤ 1,000,000
price는 10원 단위로(1의 자리가 0) 주어집니다. - 소수점 이하를 버린 정수를 return합니다.
function solution(price) {
if(price >= 500000) return Math.floor(price * 0.8);
if(price >= 300000) return Math.floor(price * 0.9);
if(price >= 100000) return Math.floor(price * 0.95);
return price;
}
// 다른 사람의 풀이
const discounts = [
[500000, 20],
[300000, 10],
[100000, 5],
]
const solution = (price) => {
for (const discount of discounts)
if (price >= discount[0]) return Math.floor(price - price * discount[1] / 100);
return price;
}
큰 금액을 아래로 배치할 경우, 동작하지 않아서 else if문을 사용해야 하지만, 큰 금액을 위에서부터 배치하면 if문 만으로 정리할 수 있다. return을 사용하지 않는다면, if - esle if로 처리해도 된다.
--> 삼항 연산자로 해결할 수 있으나, 가독성이 떨어질 것 같다.
--> switch문으로 작성할 수도 있다.
<다른 사람의 풀이에 대한 이해>
1) 금액과 할인율을 배열로 묶고, for of 반복문을 사용한다.
2) 가격이 discount[0], 즉 비용보다 크거나 같으면 discount[1] (할인율)을 적용하여 계산한다.
아이스 아메리카노
머쓱이는 추운 날에도 아이스 아메리카노만 마십니다. 아이스 아메리카노는 한잔에 5,500원입니다. 머쓱이가 가지고 있는 돈 money가 매개변수로 주어질 때, 머쓱이가 최대로 마실 수 있는 아메리카노의 잔 수와 남는 돈을 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.
- 0 < money ≤ 1,000,000
function solution(money) {
const coffeeCnt = Math.floor(money / 5500);
const change = money % 5500;
return [coffeeCnt, change];
}
// 다른 사람의 풀이
function solution(money) {
let count = 0;
while (money >= 5500) {
money -= 5500;
count++;
}
return [count, money];
}
1) 주문할 수 있는 커피의 갯수는 가격 5500원의 배수가 되어야 한다. 그 몫을 구하면 된다.
2) 남은 돈은 나머지 연산자를 사용하여 구한다.
3) 배열의 요소로 넣는다.
<다른 사람의 풀이에 대한 이해>
1) 주어진 돈이 5500보다 크거나 같을 때, 반복문을 수행한다.
2) 5500원을 지불했다는 것은 구입했다는 의미이므로, count++; 를 해준다.
3) 조건식에 부합할 때까지 반복되므로, 자연스럽게 배열의 요소가 되게끔 [count, money] 작성한다.
나이 출력
머쓱이는 선생님이 몇 년도에 태어났는지 궁금해졌습니다. 2022년 기준 선생님의 나이 age가 주어질 때, 선생님의 출생 연도를 return 하는 solution 함수를 완성해주세요
- 0 < age ≤ 120
- 나이는 태어난 연도에 1살이며 매년 1월 1일마다 1살씩 증가합니다.
function solution(age) {
return 2022 - age + 1;
}
// 다른 사람의 풀이
function solution(age) {
return new Date().getFullYear() - age + 1;
}
사람이 계산하는 방식대로 작성하였다. ㅋㅋㅋㅋ
<다른 사람의 풀이에 대한 이해>
Date객체의 getFullYear() 메소드 사용
배열 뒤집기
정수가 들어 있는 배열 num_list가 매개변수로 주어집니다. num_list의 원소의 순서를 거꾸로 뒤집은 배열을 return하도록 solution 함수를 완성해주세요.
- 1 ≤ num_list의 길이 ≤ 1,000
- 0 ≤ num_list의 원소 ≤ 1,000
function solution(num_list) {
let answer = [];
let i = num_list.length - 1;
while(i >= 0) {
answer.push(num_list[i]);
i--;
}
return answer;
}
// 다른 사람의 풀이
function solution(num_list) {
return num_list.sort((a, b) => -1);
}
function solution(num_list) {
let answer = [];
num_list.forEach(i => answer.unshift(i))
return answer
}
배열의 reverse()를 쓰면 한 번에 해결되지만, 반복문을 사용하여 풀었다.
1) 배열의 요소의 위치는 배열의 길이 -1이므로 반복문의 변수 i 에 할당한다.
2) num_list[i] : 배열 num_list의 i 번째 위치의 값을 새로운 배열 answer에 넣는다.
3) 배열 num_list의 위치가 0이 될 때까지 반복한다. 그러면 완성!
<다른 사람의 풀이에 대한 이해>
sort() 메소드
-> sort() 메소드는 원본 배열을 수정한다. (a, b) => -1을 함으로써 역순으로 정렬
forEach() 메소드
-> forEach() 메소드는 원본 배열을 순회한다.
-> 순회하면서 i번째의 요소를 새로운 배열의 앞에서부터 넣어준다.
참고 영상
'코딩테스트 > 프로그래머스 0단계 - 입문' 카테고리의 다른 글
프로그래머스 0단계 - Day7 문자열, 조건문, 수학, 반복문 (0) | 2024.03.17 |
---|---|
프로그래머스 0단계 - Day6 문자열, 반복문, 출력, 배열, 조건문 (0) | 2024.03.16 |
프로그래머스 0단계 - Day4 수학, 배열 (0) | 2024.03.14 |
프로그래머스 0단계 - Day3 사칙연산, 조건문, 배열 (0) | 2024.03.13 |
프로그래머스 0단계 - Day2 사칙연산, 조건문, 배열 (0) | 2024.03.11 |
댓글