
최대공약수 구하는 법
//성진님강의
function max (num1,num2){
if(num1 % num2 === 0) return num2;
else return max(num2 , num1 % num2)
}
공통된 문제 하나씩 풀어와서 서로 설명해주는 오프라인 스터디
문제
// 석우님의 풀이
function solution(d, budget) {
const 정렬 = d.sort((a, b) => a - b);
const temp = [];
for (const element of 정렬) {
temp.push(element);
if (temp.reduce((acc, crr) => { return acc += crr }) > budget) {
temp.pop();
break;
}
}
return temp.length;
}
// 지성님의 풀이
function solution(d, budget) {
let count = 0;
d.sort((a,b) => a-b);
for(let i=0; i<d.length; i++) {
if(budget >= d[i]) {
budget -= d[i];
count ++;
}
} return count;
};
// 지해님의 풀이
let sum = 0;
let answer = 0;
function solution(d, budget) {
d.sort((a, b) => a - b);
for (i = 0; i < d.length; i++) {
sum += d[i];
if (sum <= budget) {
answer += 1;
}
}
return answer;
}
// 배열을 객체로 빼서 중복값 세기
let arr = ['a','b','c','c','d','b','c']
let obj ={}
arr.forEach(el => obj[el] = (obj[el] || 0) + 1);
console.log(obj);
// 고차배열을 앞값, 뒷값 기준으로 2번 정렬할 수 있다.
// 문제: https://school.programmers.co.kr/learn/courses/30/lessons/120880
// 최빈값 구하기 문제에서 고차배열로 푼 풀이 참고하기
// 성진님의 풀이
function solution(numlist, n) {
var answer = [];
// 1. 배열을 순회하면서 정수 n과의 차의 절대값을 구한다.
// 2. 차이가 작은 요소부터 정렬을 해준다.
// 3. 차이가 같을 경우 요소가 큰 수부터 푸쉬를 해준다.
let obj = {};
numlist.map(v => obj[v] = Math.abs(v-n) )
let arr = Object.entries(obj)
arr.sort((a,b) => parseInt(b[0]) - parseInt(a[0]))
arr.sort((a,b) => a[1] - b[1])
arr.map(v => answer.push(parseInt(v[0])))
return answer;
}