본문 바로가기

programming study/Algorithm

(275)
[프로그래머스] 짝지어 제거하기 - JavaScript 풀이 본 게시물은 프로그래머스의 연습 문제 풀이입니다. 저작권은 (주) 그랩에게 있습니다 자바스크립트 코드(나의 풀이) function solution(string) { // 짝을 집어 넣을 배열 const pairArray = []; // 주어진 문자열 순회 for (let s of string) { // pairArray가 비어있으면 현재 접근한 넣기 if (!pairArray.length) { pairArray.push(s); // pairArray에 마지막에 넣은 문자가 현재 접근한 문자와 같을 때 } else if (pairArray[pairArray.length - 1] === s) { // 짝이 맞으므로 pairArray에서 삭제 pairArray.pop(); // pairArray에 마지막에 넣..
[프로그래머스] 124 나라의 숫자 - JavaScript 풀이 본 게시물은 프로그래머스의 연습 문제 풀이입니다. 저작권은 (주) 그랩에게 있습니다 자바스크립트 코드(나의 풀이) function solution(n) { let answer = ''; // 124 나라의 숫자 const numbers = [4, 1, 2]; // n이 0이 되면 중단 while (n !== 0) { // n을 3으로 나눈 몫 let share = parseInt(n / 3); // n을 3으로 나눈 나머지 const rest = n % 3; // 나머지가 0 인경우 몫에서 -1 if (rest === 0) { share -= 1; } // 124 나라 숫자 입력 answer = `${numbers[rest]}${answer}` // n을 몫으로 최신화 n = share; } return..
[프로그래머스] 큰 수 만들기 - JavaScript 풀이 본 게시물은 프로그래머스의 연습 문제 풀이입니다. 저작권은 (주) 그랩에게 있습니다 자바스크립트 코드(나의 풀이) 실패 코드 이중 for문으로 인해, 시간복잡도가 높아 오답처리가 되었음 function solution(number, k) { let answer = ''; // 아래의 로직을 k번 반복 for (let i = 1; i
[프로그래머스] 타겟 넘버 - JavaScript 풀이 본 게시물은 프로그래머스의 연습 문제 풀이입니다. 저작권은 (주) 그랩에게 있습니다 자바스크립트 코드(나의 풀이) function solution(numbers, target) { let answer = 0; // 주어진 숫자의 개수 const numbersCount = numbers.length; // index: 접근할 배열의 인덱스, numbers: 주어진 숫자 배열, sum: 누적된 합, target: 목표합 function DFS(index, sum) { // 주어진 숫자 배열을 탐색 완료하면 if (index === numbersCount) { // target과 같으면 답으로 기록 if (sum === target) { answer += 1; } // 재귀 호출 종료 return; } els..
[프로그래머스] 하노이의 탑 - JavaScript 풀이 본 게시물은 프로그래머스의 연습 문제 풀이입니다. 저작권은 (주) 그랩에게 있습니다 자바스크립트 코드(나의 풀이) // 하노이의 탑 function solution(n) { const answer = []; // from: 원반의 출발 기둥, to: 목표 기둥 other: 목표 기둥, disc: 원반 갯수 function hanoi(from, to, other, disc) { // 재귀 함수 호출 종료 if (disc === 0) { return; } else { // 원반 하나를 제외하고 목적지가 아닌 곳으로 이동시킴 hanoi(from, other, to, disc - 1); // 맨 아래 원반을 목적지로 이동시킴 answer.push([from, to]); // 다른 곳으로 옮겼던 원반을 목적지로 ..
[프로그래머스] 신고 결과 받기 - JavaScript 풀이 본 게시물은 프로그래머스의 연습 문제 풀이입니다. 저작권은 (주) 그랩에게 있습니다 자바스크립트 코드(나의 풀이) function solution(id_list, report, k) { const answer = []; // id별 신고한 id를 기록하는 object 초기화 const idReportedObject = {}; for (const id of id_list) { idReportedObject[id] = []; answer.push(0); } // rerport 배열 순회 for (const rep of report) { // split로 공백 기준으로 쪼개기 // 0번 인덱스는 신고하는 id, 1번 인덱스는 신고당한 id const [reportId, reportedId] = rep.spli..
[프로그래머스] 나머지가 1이 되는 수 찾기 - JavaScript 풀이 본 게시물은 프로그래머스의 연습 문제 풀이입니다. 저작권은 (주) 그랩에게 있습니다 자바스크립트 코드(나의 풀이) // 나머지가 1이 되는 수 찾기 function solution(n) { let answer = 0; // 1 ~ n - 1까지 접근하여 n을 나누었을 때, 나머지가 1이 되도록 하는 가장 작은 자연수 구하기 for (let i = 1; i < n; i++) { if (n % i === 1) { answer = i; break; } } return answer; } Reference 프로그래머스
[프로그래머스] 최소 직사각형 - JavaScript 풀이 본 게시물은 프로그래머스의 연습 문제 풀이입니다. 저작권은 (주) 그랩에게 있습니다 자바스크립트 코드(나의 풀이) function solution(sizes) { let answer = 0; // 지갑의 가로 길이 let width = 0; // 지갑의 세로 길이 let height = 0; // 주어진 sizes 배열을 하나씩 접근 for (let size of sizes) { // 가로와 세로 중 더 긴 것을 담은 변수 const numA = size[0] < size[1] ? size[1] : size[0]; // 가로와 세로 중 더 짧은 것을 담은 변수 const numB = size[0] < size[1] ? size[0] : size[1]; // 지갑의 가로와 세로를 최신화 width = wi..