본문 바로가기

programming study/Algorithm

(275)
[프로그래머스] 가장 큰 정사각형 찾기 - JavaScript 풀이 본 게시물은 프로그래머스의 연습 문제 풀이입니다. 저작권은 (주) 그랩에게 있습니다 자바스크립트 코드(나의 풀이) // 가장 큰 정사각형 찾기 function solution(board) { let answer = 0; if (board.length board[i][j] ? answer : board[i][j]; } } } return answer * answer; } Comment 이중 for문으로 board를 접근한다. i가 행번호, j가 열번호일 때 board[ i ] [ j ]가 0보다 클때만 왼쪽, 대각선위, 위의 요소를 접근하여 그 중 최솟값 +1로 해당 요소에 입력한다. 그렇게 기록해 나갔을 때, 최댓값이 가장 큰 정사각형의 한 변이다. Reference 프로그래머스
[프로그래머스] 올바른 괄호 - JavaScript 풀이 본 게시물은 프로그래머스의 연습 문제 풀이입니다. 저작권은 (주) 그랩에게 있습니다 자바스크립트 코드(나의 풀이) // 올바른 괄호 function solution(s) { let answer = true; // s를 배열에 넣기 const sArray = s.split(''); // 올바른 괄호인지 검사 // 빼낸 괄호를 임시로 넣는 배열 const sTemp = []; for (let i = 0; i < sArray.length; i++) { if (sArray[i] === '(') { sTemp.push(sArray[i]); } else { if (sTemp[sTemp.length - 1] === '(') { sTemp.pop(); } else { sTemp.push(sArray[i]); } } }..
[프로그래머스] 피보나치 수 - JavaScript 풀이 본 게시물은 프로그래머스의 연습 문제 풀이입니다. 저작권은 (주) 그랩에게 있습니다 자바스크립트 코드(나의 풀이) // 피보나치 수 // 피보나치 수를 메모이제이션 const fiboMemo = { 0: 0, 1: 1, 2: 1, } function solution(n) { if (fiboMemo[n]) { return fiboMemo[n]; } else { // 해당수까지 메모이제이션을 참고하며 답 구하기 for (let i = 3; i
[프로그래머스] 최솟값 만들기 - JavaScript 풀이 본 게시물은 프로그래머스의 연습 문제 풀이입니다. 저작권은 (주) 그랩에게 있습니다 자바스크립트 코드(나의 풀이) // 최솟값 만들기 function solution(A, B) { let answer = 0; // A를 오름차순 정렬 A.sort((a, b) => a - b); // B를 내림차순 정렬 B.sort((a, b) => b - a); // 각 배열의 요소를 하나씩 접근하여 곱하기 for (let i = 0; i < A.length; i++) { answer += A[i] * B[i]; } return answer; } Comment 각 두 배열의 요소를 더하는데 최소가 되도록 만들어야 한다. 즉, A배열에서의 최솟값 * B배열에서의 최댓값을 구하면 최소가 되므로, A는 오름차순 정렬을 하고 ..
[프로그래머스] N개의 최소공배수 - JavaScript 풀이 본 게시물은 프로그래머스의 연습 문제 풀이입니다. 저작권은 (주) 그랩에게 있습니다 자바스크립트 코드(나의 풀이) // N개의 최소공배수 // 유클리드 호제법으로 최대공약수를 구하는 함수 function findGcd(a, b) { if (a % b === 0) { return b; } else { return findGcd(b, a % b); } } function solution(arr) { // 주어진 배열에 접근하여 최소공배수 구하기 let a = arr[0]; let b = 0; let lcm = 0; for (let i = 1; i lcm ? (a * b / fi..
[프로그래머스] 행렬의 곱셈 - JavaScript 풀이 본 게시물은 프로그래머스의 연습 문제 풀이입니다. 저작권은 (주) 그랩에게 있습니다 자바스크립트 코드(나의 풀이) // 행렬의 곱셈 function solution(A, B) { let answer = []; for (let i = 0; i < A.length; i++) { // 행렬 A의 행 접근 - A const row = A[i]; answer.push([]); // 행렬 B의 열 접근해서 곱하기 - B // 행렬 B의 열 길이 for (let j = 0; j < B[0].length; j++) { let sum = 0; // 행렬 B의 행 길이 // B는 열을 고정해놓고 행을 이동하기 - C for (let k = 0; k < B.length; k++) { sum += row[k] * B[k][j..
[프로그래머스] x만큼 간격이 잇는 n개의 숫자 - JavaScript 풀이 본 게시물은 프로그래머스의 연습 문제 풀이입니다. 저작권은 (주) 그랩에게 있습니다 자바스크립트 코드(나의 풀이) // x만큼 간격이 잇는 n개의 숫자 function solution(x, n) { let answer = []; let number = x; for (let i = 0; i < n; i++) { answer.push(number) number += x; } return answer; } Reference 프로그래머스
[프로그래머스] 행렬의 덧셈 - JavaScript 풀이 본 게시물은 프로그래머스의 연습 문제 풀이입니다. 저작권은 (주) 그랩에게 있습니다 자바스크립트 코드(나의 풀이) // 행렬의 덧셈 function solution(arr1, arr2) { let answer = []; // 배열의 각 요소 합치기 for (let i = 0; i < arr1.length; i++) { // 각 배열의 row const arr1Row = arr1[i]; const arr2Row = arr2[i]; // answer에 빈 배열 넣기 answer.push([]); // 각 배열의 요소에 접근하여 더하여 answer에 넣기 for (let j = 0; j < arr1Row.length; j++) { answer[i].push(arr1Row[j] + arr2Row[j]); } }..