반응형

프로그래머스 55

[프로그래머스/JavaScript] Lv.1 기사단원의 무기

해당 문제는 약수의 개수를 빠르게 구하는 게 중요한 문제이다. https://school.programmers.co.kr/learn/courses/30/lessons/136798 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 설명 숫자나라 기사단의 각 기사에게는 1번부터 number까지 번호가 지정되어 있습니다. 기사들은 무기점에서 무기를 구매하려고 합니다. 각 기사는 자신의 기사 번호의 약수 개수에 해당하는 공격력을 가진 무기를 구매하려 합니다. 단, 이웃나라와의 협약에 의해 공격력의 제한수치를 정하고, 제한수치보다 큰 공격력을 가진 무기를 ..

Algorithm 2022.12.09

[프로그래머스/JavaScript] Lv.1 문자열 나누기

해당 문제는 반복문(for) 조건(if)에 따라 답을 구하는 문제입니다. https://school.programmers.co.kr/learn/courses/30/lessons/140108 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 설명 2. 입출력 예 3. 문제 풀이 function solution(s) { // 1) a:동일할 경우 증가, b:다른 경우 증가 let answer=a=b=0; // 2) 비교 문자 let word=''; // 3) true 경우만 비교 문자를 담는다. let isTrue = true; // 4) 문자열 하나..

Algorithm 2022.12.08

[프로그래머스/JavaScript] Lv.2 점 찍기

해당 문제는 시간 복잡도 O(n) 또는 O(log n)에서 답을 도출하는 문제이다. 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 설명 2. 입출력 예 3. 문제 풀이 시간 복잡도가 중요한 문제로 O(n) 또는 O(log n)로 풀어야한다. (이중 for문 X) function solution(k, d) { let answer = 0; // 1) x좌표 값 만큼 반복 실행 for(let x=0; x

Algorithm 2022.12.07

[프로그래머스/JavaScript] Lv.2 이진 변환 반복하기

해당 문제는 진수 변화를 반복하는 문제이다. 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 설명 2. 입출력 예 3. 문제 풀이 재귀 함수를 통해 s의 값이 1이 될 때까지 반복하여 값을 구한다. function solution(s) { return dfs(s, 0, 0); }; // 1) 재귀 함수를 통해 마지막 결과 값을 가져온다. function dfs(s, cnt, len) { // 2) s 값이 1이되면 반복 횟수, 0삭제 갯수를 return 한다. if(s == 1) return [cnt, len]; // 3) s의 총길 let af..

Algorithm 2022.12.06

[프로그래머스/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
반응형