반응형

알고리즘 71

[프로그래머스/JavaScript] Lv.3 억억단을 외우자

해당 문제는 시간 복잡도 개선하는 수학적 사고가 필요한 문제이다. 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 설명 2. 입출력 예 3. 문제 풀이 function solution(e, starts) { // 1) e이하의 자연수이기 때문에 e만큼 배열 생성 const numsArr = new Array(e+1).fill(0); /* 2) 약수의 개수를 한번에 count하는 반복문 인덱스 번호를 자연수로 정하고, 해당 자연수에 대한 약수를 반복문을 통해 하나씩 증가시킨다. */ for(let i = 1;i= numsArr[maxArr[i+1]..

Algorithm 2022.12.05

[프로그래머스/JavaScript] Lv.1 명예의 전당 (1)

해당 문제는 반복문과 정렬을 통해 답을 도출하는 문제이다. 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 설명 2. 입출력 예 3. 문제 풀이 function solution(k, score) { var answer = []; // 1) 명예의전당(k)을 담는 배열 생성 var nums = []; // 2) score에 담긴 점수를 하나씩 꺼낸다. score.forEach(num => { // 3) 명예의 전당에 넣는다. nums.push(num); // 4) 명예의 전당 배열을 내림차순으로 정렬하고 상위 k번까지 자른다. nums.sort((..

Algorithm 2022.11.30

[프로그래머스/JavaScript] Lv.2 귤 고르기

해당 문제는 Hash와 정렬을 활용하는 문제입니다. 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 귤의 크기별 개수를 담은 map을 생성하고, 해당 map을 정렬하여 BOX에 담는 귤을 구한다. function solution(k, tangerine) { // 1) 귤의 크기별 개수를 담을 map 생성한다. const kind = new Map(); let answer =0 ; // 2) 크기별 개수를 구한다. tangerine.forEach(org => { kind.set(org, kind.has(org) ? kind.get(org)+1 : ..

Algorithm 2022.11.25

[프로그래머스/JavaScript] Lv.2 수식 최대화

재귀 함수를 통해 답을 도출 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 사용 가능한 연산자를 반복하는 DFS 함수, 수식에 해당 연산자를 포함하고 있는 값들을 계산하는 재귀 함수를 사용하여 해당 문제를 풀었다. let answer = []; function solution(expression) { // 1) 사용 가능한 연산자를 배열에 담는다. const opts = ["+", "-", "*"]; // 2) 문자열을 연산자를 구분으로 배열로 변환한다. 해당 배열은 구분 연산자 또한 포함한다. let cal = expression.split(..

Algorithm 2022.11.24

[프로그래머스/JavaScript] Lv.2 타겟넘버

해당 문제는 DFS문제로 경우의 수를 구하는 문제이다. * BFS 사용 예 - 최단거리, 최소 횟수, 미로, 탐색 등 * DFS 사용 예 - 경우의 수, 이동 과정에 제약 있음 등 문제 https://school.programmers.co.kr/learn/courses/30/lessons/43164 문제 풀이 let answer = 0 function solution(numbers, target) { // 1) DFS 함수 최초 실행 합(sum), 인덱스(idx) 0으로 셋팅 dfsSum(0, numbers, 0, target); return answer; } function dfsSum(sum, numbers, idx, target) { // 2) 인덱스(idx)가 배열 길이와 같아지면 return한다..

Algorithm 2022.11.20

[프로그래머스/JavaScript] Lv.2 숫자의 표현

해당 문제는 완전 탐색을 통해 답을 도출하는 문제이다. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/12924 완전 탐색 이란? '무식하게 푼다(brute-force)'는 컴퓨터의 빠른 계산 능력을 이용해 가능한 모든 경우의 수를 체크해서 정답을 찾는 방법이다. 1. 완전 탐색 기법을 활용하는 방법 1) 해결하고자 하는 문제의 가능한 경우의 수를 대략적으로 계산한다. 2) 가능한 모든 방법을 다 고려한다. - Brute Force 기법 - for문 / if문을 활용 - 순열(Permutation) - n개의 원소 중 r개의 원소를 중복 허용 없이 나열하는 방법 - 재귀 호출 - 비트 마스크 - 2진수 표현 기법을 활용하는 방법 - BFS, ..

Algorithm 2022.11.19

[프로그래머스/JavaScript] Lv.2 숫자 카드 나누기

해당 문제는 최대 공약수를 구해 비교하는 문제이다. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/135807 1. 유클리드 알고리즘(유클리드 호제법) 유클리드 호제법은 두 자연수 사이의 최대공약수를 구하는 알고리즘이다. * 정의 어떤 자연수 a, b가 있을 때 (a > b), 두 수의 최대공약수는 a를 b로 나눈 나머지와 b의 최대공약수와 같다. 1) 두 수 중에서 큰 수를 작은 수로 나눈다. 2) 만약 나누고 난 나머지가 0이라면 작은 수가 최대공약수이다. 3) 만약 나머지가 0 이 아니라면, 작은 수를 다시 나머지로 나눈다. 4) 이를 반복해서 나머지가 0 이 될 때, 그 수가 바로 두 수의 최대공약수이다. 2. 문제 풀이 // arra..

Algorithm 2022.11.17

[프로그래머스/JavaScript] Lv.3 여행경로

해당 문제는 DFS문제로 조건에 따른 경우의 수를 구하는 문제이다. BFS 사용 예 - 최단거리, 최소 횟수, 미로, 탐색 등 DFS 사용 예 - 경우의 수, 이동 과정에 제약 있음 등 문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/43164 1. DFS 과정 2. 풀이 var answer = []; function solution(tickets) { // 1) 알파벳 순서에 따른 정렬 let ticketsSort = tickets.sort(); // 2) ICN에서 출발하기 때문에 ICN 담고 시작한다. return dfsPlan("ICN", ticketsSort, ["ICN"]); } function dfsPlan(ticket, ti..

Algorithm 2022.11.11

[프로그래머스/JavaScript] Lv.3 아이템 줍기

해당 문제는 BFS문제로 최단 거리를 구하는 문제이다. BFS 사용 예 - 최단거리, 최소 횟수, 미로, 탐색 등 DFS 사용 예 - 경우의 수, 이동 과정에 제약 있음 등 문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/87694 function solution(rectangle, characterX, characterY, itemX, itemY) { // 1) 좌표를 2배로 늘린다. characterX *= 2; characterY *= 2; itemX *= 2; itemY *= 2; let dobuleRec = rectangle.map(rec => rec.map(point => point * 2)); // 2) 위, 아래, 우측, 좌..

Algorithm 2022.11.08

[프로그래머스/JavaScript] Lv.3 단위변환

해당 문제는 BFS문제로 최소 횟수를 구하는 문제이다. BFS 사용 예 - 최단거리, 최소 횟수, 미로, 탐색 등 DFS 사용 예 - 경우의 수, 이동 과정에 제약 있음 등 문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/43163 function solution(begin, target, words) { // 1) 중복 방지를 위해 변환한 알파벳을 담을 배열 선언 const visited = []; // 2) 큐에 최초 알파벳과 위치를 담는다. const queue = [[begin, 0]]; // 3) 큐에 값이 있으면 반복 while(queue.length > 0){ // 4) 큐에 담긴 최근 값(shift) 가져오기 let [w, ..

Algorithm 2022.11.03
반응형