코로 넘어져도 헤딩만 하면 그만
JS 프로그래머스(입문) 풀이 정리 Day 3-4 본문
💡오름차순, 내림차순 sort()로 정렬하기
function solution(array) {
const resortList = array.sort((a, b)=>a-b);
const mid_num = Math.trunc(array.length / 2);
const answer = resortList[mid_num];
return answer;
}
어제 푼 문제에서 나온 Math.trunc()로 소수점 이하의 수를 버리는 방식을 취했다. floor을 썼어도 괜찮았을 것 같다.
sort()는 기본적으로 문자를 UTF-16 코드 유닛 값을 기준으로 정렬한다. 따라서 숫자 정렬을 제대로 하기 위해 커스터마이징이 필요하다. 이번에는 a-b를 사용해서 오름차순으로 정렬해주었다.
또한, sort()의 경우 원본 배열을 변경시키기 때문에 조심해야 한다. 복사를 해서 사용하는 편이 좋을 것 같다.
💡n보다 작은 홀수만 배열에 넣기
function solution(n) {
const answer = [];
let i = 1;
while (i <= n) {
if (i % 2 === 1) {
answer.push(i);
}
i++;
}
return answer;
}
while과 if문을 사용해서 답을 도출했다.
아래와 같이 깔끔하게 +=2를 사용하는 방법도 있다.
function solution(n) {
var answer = [];
for (let i = 1; i<=n; i+=2) answer.push(i)
return answer;
}
💡 피자 나누기1(몫과 나머지)
function solution(n) {
const needPizza = n / 7;
let answer = 0;
if (n % 7 === 0) {
answer = needPizza;
} else {
answer = Math.floor(needPizza) + 1;
}
return answer;
}
일단 답은 풀었는데, Math.ceil을 사용하면 더 깔끔하게 작성할 수 있다. Math.floor가 소수점 아래를 버린다면 Math.ceil은 올림을 처리한다.
아니면 아래와 같이 삼항 연산자로 쓰는 법도 고려해볼 만하다.
function solution(n) {
return n % 7 === 0 ? n / 7 : Math.floor(n / 7) + 1;
}
💡 피자 나누기2(최대공약수와 최소공배수)
function gcd(a, b) {
while (b !== 0) {
const temp = b;
b = a % b;
a = temp;
}
return a;
}
function lcm(n, m) {
return (n * m) / gcd(n, m);
}
function solution(n) {
let answer = 0;
if(n%6===0){
answer = n/6;
} else {
answer = lcm(n, 6)/6
}
return answer;
}
너무 원론적으로 풀었다는 느낌? 최대공약수와 최소공배수를 구하고 활용했다.
while문에 나머지가 없는 경우를 빠져나가는 조건으로 주고, 깔끔하게 쓴 코드가 있었다.
const solution = (n) => {
let piece = 6
while(true) {
if (piece % n === 0) {
break
}
piece += 6
}
return piece / 6
}
💡 배열의 평균값 구하기
function solution(numbers) {
let sum = 0;
for(let i=0;i<numbers.length;i++){
sum += numbers[i];
}
let answer = sum/numbers.length;
return answer;
}
for문을 사용해서 풀었는데, reduce 고차함수를 사용하는 방법이 있었다.
reduce 쓸 생각은 못 했는데 응용에 좀더 관심을 기울여야겠다...
function solution(numbers){
let answer = numbers.reduce((a,b)=>a+b, 0) / numbers.length;
return answer;
}
'JavaScript > 프로그래머스 문제풀이' 카테고리의 다른 글
JS 프로그래머스 (입문) 15-20일차 (2) | 2024.07.23 |
---|---|
JS 프로그래머스 (입문) 12-14일차 (0) | 2024.07.17 |
JS 프로그래머스(입문) 풀이 정리 Day1-2 (1) | 2024.07.02 |
Comments