문제 : 첫 번째 분수의 분자와 분모를 뜻하는 denum1, num1, 두 번째 분수의 분자와 분모를 뜻하는 denum2, num2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.
function solution(denum1, num1, denum2, num2) {
// num이 분모 , denum이 분자 "이름 좀 바꿔 주세요.."
const answer = [];
const commonDenum = num1 * num2;
const sumNum = (num1*denum2) + (num2*denum1);
const gcf = findGCF(commonDenum, sumNum);
answer.push(sumNum/gcf)
answer.push(commonDenum/gcf)
return answer;
}
function findGCF (n1,n2) {
if (n2 == 0){
return n1
}
return n1 > n2 ? findGCF(n2, n1 % n2) : findGCF(n1, n2 % n1);
}
🗒️코멘트 : 풀이 방법
문제 : 연속된 세 개의 정수를 더해 12가 되는 경우는 3, 4, 5입니다. 두 정수 num과 total이 주어집니다. 연속된 수 num개를 더한 값이 total이 될 때, 정수 배열을 오름차순으로 담아 return하도록 solution함수를 완성해보세요.
function solution(num, total) {
let sum = 0;
const answer = [];
for (let i = 0 ; i < num ; i++){
sum += i;
}
for (let j = 0 ; j < num ; j++){
answer.push((total - sum)/num + j)
}
return answer
}
🗒️코멘트 : NULL
문제 : 다음 그림과 같이 지뢰가 있는 지역과 지뢰에 인접한 위, 아래, 좌, 우 대각선 칸을 모두 위험지역으로 분류합니다.
function solution(board) {
const N = board.length
const dx = [-1, 1, 0, 0, -1, -1, 1, 1]
const dy = [0, 0, -1, 1, -1, 1, -1, 1]
const locationOne = [];
for (let i = 0 ; i < N ; i++){
for (let j = 0 ; j < board[i].length ; j++){
if(board[i][j] == 1){
locationOne.push([i,j])
}
}
}
locationOne.forEach(([x, y]) => {
for (let i = 0; i < 8; i++) {
const nx = x + dx[i]
const ny = y + dy[i]
if (0 <= nx && nx < N && 0 <= ny && ny < N) {
board[nx][ny] = 1
}
}
})
let answer = 0;
for (let m = 0 ; m < N ; m++){
for (let n = 0 ; n < board[m].length ; n++){
if (board[m][n] == 0){
answer++
}
}
}
return answer
}
🗒️코멘트 : 접근 방식