1. SQL
: 상반기 동안 각 아이스크림 성분 타입과 성분 타입에 대한 아이스크림의 총주문량을 총주문량이 작은 순서대로 조회하는 SQL 문을 작성해주세요. 이때 총주문량을 나타내는 컬럼명은 TOTAL_ORDER로 지정해주세요.
SELECT INGREDIENT_TYPE, sum(TOTAL_ORDER) TOTAL_ORDER
from FIRST_HALF fh inner join ICECREAM_INFO info on fh.FLAVOR=info.FLAVOR
group by 1
order by 2
JavaScript
: 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다.
function solution(n, m) {
var answer = [1, 1];
let divided_both = [];
let divided_other = [];
let next_num = [n, m]; // [0] = n, [1] = m
let divide_num=2;
if(next_num[0] !== 1 && next_num[1] !== 1) {
// n, m 둘 중 1이 아니라면 반복
while (next_num[0] !== 1 || next_num[1] !== 1){
// 공약수 찾기
if(next_num[0]%divide_num == 0 && next_num[1]%divide_num == 0){
next_num[0] /= divide_num;
next_num[1] /= divide_num;
divided_both.push(divide_num);
divide_num=2;
}
// n과 m 서로소 찾기
else if (next_num[0]%divide_num == 0) {
next_num[0] /= divide_num;
divided_other.push(divide_num);
divide_num=2;
}
else if (next_num[1]%divide_num == 0) {
next_num[1] /= divide_num;
divided_other.push(divide_num);
divide_num=2;
}
// 나눌 수 증가
else divide_num++;
}
}
// 최대 공약수 구하기
divided_both.forEach(e=>{
answer[0]*=e;
})
// 최소 공배수 구하기
divided_both.forEach(e=>{
answer[1]*=e;
})
divided_other.forEach(e=>{
answer[1]*=e;
})
return answer;
}
# 유클리드 호제법 활용
function gcdlcm(a, b) {
var r;
for(var ab= a*b;r = a % b;a = b, b = r){}
return [b, ab/b];
}
처음 봤을때 이렇게 간결하게 된다는게 어이가 없었다.
사실 그냥 보면 전혀모르겠다..
무지함에 반성을하면서 공부해봐야겠다.
실제 회사에서도 쓰이는 것일지는 몰라도 무슨 뜻인지는 알아야한다고 생각한다.