Day 4
피자 나눠먹기(1)
https://school.programmers.co.kr/learn/courses/30/lessons/120814
function solution(n) {
// n을 7로 나눈 나머지를 integerCheck 변수에 저장
let integerCheck = n % 7;
let answer = 0;
// integerCheck가 0이라면 피자는 n / 7개가 필요하다.
// 예시: 피자를 나눠먹을 사람이 21명이면 피자는 3판이 필요하다.
if (integerCheck === 0) {
answer = n / 7;
}
// integerCheck가 0이 아니라면 피자는 n / 7의 몫 + 1개가 필요하다.
// 예시: 피자를 나눠먹을 사람이 22명이면 피자는 3판 + 1판이 필요하다.
else {
answer = Math.floor(n / 7) + 1;
}
return answer;
}
번외: ceil을 써서 풀 수 있다. (ceil은 올림을 할 수 있다.)
function solution(n) {
return Math.ceil(n / 7)
}
피자 나눠먹기(2)
https://school.programmers.co.kr/learn/courses/30/lessons/120815
function solution(n) {
// 최대공약수 구하기
let gcd = (a, b) => (b === 0 ? a : gcd(b, a % b));
// 최소공배수: 두 수를 곱한 값을 최대공약수로 나눈 수
let lcm = n * 6 / gcd(n, 6);
// 정답: 최소공배수를 6으로 나눈 수
let answer = lcm / 6;
return answer;
}
피자 나눠먹기(3)
https://school.programmers.co.kr/learn/courses/30/lessons/120816
function solution(slice, n) {
// isInteger = n을 slice로 나누었을 때 나머지
let isInteger = n % slice;
let answer = 0;
// n을 slice로 나누었을 때 나머지가 0이면 정답은 n / slice이다.
if(isInteger === 0) {
answer = n / slice;
}
// 나머지가 0이 아니라면 n을 slice로 나눈 몫에 1을 더해준 값이 정답이다.
else {
answer = parseInt(n / slice) + 1;
}
return answer;
}
피자 나눠먹기(1)처럼 그냥 ceil을 써서 올림을 하면 훨씬 쉽게 풀 수 있었다…
function solution(slice, n) {
return Math.ceil(n / slice)
}
배열의 평균값
https://school.programmers.co.kr/learn/courses/30/lessons/120817
function solution(numbers) {
let sum = 0;
// 배열을 순회하면서 배열값을 sum에 더해준다.
for(let i = 0; i < numbers.length; i++) {
sum += numbers[i];
}
// sum을 배열의 길이에 나눠준 값이 평균이다.
let answer = sum / numbers.length;
return answer;
}
reduce를 활용하여 훨씬 간단하게 표현할 수 있었다.
function solution(numbers) {
var answer = numbers.reduce((a,b) => a+b, 0) / numbers.length;
return answer;
}
Day 5
옷가게 할인 받기
https://school.programmers.co.kr/learn/courses/30/lessons/120818
단순한 if문의 반복으로 풀 수 있다.
function solution(price) {
// 10만원 이상 사면 5% 할인
if(price >= 100000 && price < 300000) {
return Math.floor(price * 0.95);
}
// 30만원 이상 사면 10% 할인
else if(price >= 300000 && price < 500000) {
return Math.floor(price * 0.9);
}
// 50만원 이상 사면 20% 할인
else if(price >= 500000) {
return Math.floor(price * 0.8);
}
// 할인 미적용
else {
return price;
}
}
아이스 아메리카노
https://school.programmers.co.kr/learn/courses/30/lessons/120819
몫과 나머지를 구하면 되는 쉬운 문제였다.
function solution(money) {
// 최대로 마실 수 있는 아메리카노 잔 수
let coffee_count = parseInt(money / 5500);
// 남는 돈
let left_money = money % 5500;
let answer = [coffee_count, left_money];
return answer;
}
나이 출력
https://school.programmers.co.kr/learn/courses/30/lessons/120820
그냥 2022년에서 나이를 빼고 1 더해주면 된다.
function solution(age) {
return 2022 - age + 1;
}
배열 뒤집기
https://school.programmers.co.kr/learn/courses/30/lessons/120821
그냥 reverse를 넣어봤더니 맞았다. 너무 허무한데…? 출제자의 의도는 reverse를 쓰는 것이 아니었을 것 같다.
function solution(num_list) {
return num_list.reverse();
}
‘다른 사람의 풀이’에서 본 코드. 이렇게 푸는 것이 아마 정석일 것이다.
function solution(num_list) {
var answer = [];
var j = num_list.length
for(var i = 1; i <= j; i++){
answer.push(num_list[j-i])
}
return answer;
}
sort를 이용해서도 풀 수 있었다.
function solution(num_list) {
return num_list.sort((a, b) => -1);
}
하루에 2일치에 해당하는 문제를 도전과제로 보여준다. 아직까지는 문제들이 쉬워서 빠르게 풀고 있다. 한 문제 푸는데 30초 정도 걸리는 정도? ‘기초 문제’로 넘어가야하나 싶기도 하고. 하지만 중요한 것은 얼마나 어려운 문제를 푸는 것이 아닌, 꾸준하게 문제를 푸는 것이라고 생각하고 있기에 일단 차근차근 스케줄을 따라가 보려 한다. 아마 다른 거 하느라 문제 하루 치를 다 못 푸는 날들도 있을 것이다. 계속 해가면서 자바스크립트 문법에 익숙해지자.
'Programmers(JavaScript)' 카테고리의 다른 글
[프로그래머스 자바스크립트] '폰켓몬' 풀어보기 (2) | 2024.07.16 |
---|---|
[프로그래머스 자바스크립트] 코딩테스트 입문 Day 9,10 풀어보기 (0) | 2024.02.14 |
[프로그래머스 자바스크립트] 코딩테스트 입문 Day 8 풀어보기 (0) | 2024.02.13 |
[프로그래머스 자바스크립트] 코딩테스트 입문 Day 6,7 풀어보기 (1) | 2024.02.13 |
[프로그래머스 자바스크립트] 코딩테스트 입문 Day 1,2,3 풀어보기 (1) | 2024.02.10 |