Algorithm & 자료구조/알고리즘 w.JavaScript

    [알고리즘 JS] 타겟 넘버 (프로그래머스 Lv.2)

    문제 https://school.programmers.co.kr/learn/courses/30/lessons/17677 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 function solution(numbers, target) { let count = 0; const DFS = (level, sum) => { // 종료 조건 if (level === numbers.length) { if (sum === target) count++; return; } // 반복 조건 else { DFS(level + 1, sum + numbers[level]); D..

    [알고리즘 JS] 프린터 (프로그래머스 Lv.2)

    문제 https://school.programmers.co.kr/learn/courses/30/lessons/42587 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 function solution(priorities, location) { let count = 1; let queue = priorities.slice(); while (true) { const max = Math.max(...queue); const now = queue.shift(); // 반복 // 1. now 가 max와 같은 경우 if (now === max) { // loc..

    [알고리즘 JS] n^2 배열 자르기 (프로그래머스 Lv.2)

    문제 https://school.programmers.co.kr/learn/courses/30/lessons/87390 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 function solution(n, left, right) { let answer = []; for (let i = left; i

    [알고리즘 JS] 신고 결과 받기 (프로그래머스 Lv.1)

    문제 https://school.programmers.co.kr/learn/courses/30/lessons/92334 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 function solution(id_list, report, k) { const answer = []; const dedupedReport = [...new Set(report)]; const reportedId = {}; const reportedCount = new Map(); // 전체 유저 id로 키값 지정 for (let id of id_list) { reportedId[id..

    [알고리즘 JS] 햄버거 만들기 (프로그래머스 Lv.1)

    문제 https://school.programmers.co.kr/learn/courses/30/lessons/133502 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 숫자 배열에서 1,2,3,1 의 연속된 수가 나올 수 있는 횟수를 구하여야함! 풀이(정답) function solution(ingredient) { let count = 0; let stack = []; for (let item of ingredient) { stack.push(item); if (stack.length >= 4) { let burger = stack.slice(-4).jo..

    [알고리즘 JS] 성격 유형 검사하기 (프로그래머스 Lv.1)

    문제 https://school.programmers.co.kr/learn/courses/30/lessons/118666 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 검사지에 총 N개의 질문, 각 질문마다 7개의 선택지 존재함 각 지표별 점수를 계산해서 성격 유형을 출력하는 문제 풀이(정답) function solution(survey, choices) { let answer = ''; // 4개의 지표를 연관되는 순으로 객체 쌍으로 만들었다. const indicators = { 1: {R: 0, T: 0}, 2: {C: 0, F: 0}, 3: {J:..

    [알고리즘 JS] 숫자 짝꿍 (프로그래머스 Lv.1)

    문제 https://school.programmers.co.kr/learn/courses/30/lessons/131128 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 3자리 이상의 두 정수 X,Y 에서 공통적으로 등장하면서 짝지어지는 수들을 가지고 만들 수 있는 가장 큰 정수를 리턴 풀이(정답) function solution(X, Y) { // 정답 문자열 let answer = ''; // 길이 10, 0으로 초기화된 두 배열 const hashX = new Array(10).fill(0); const hashY = new Array(10).fill..

    [알고리즘 JS] 로또의 최고 순위와 최저 순위 (프로그래머스 Lv.1)

    문제 https://school.programmers.co.kr/learn/courses/30/lessons/77484 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1~45까지의 숫자 중 6개의 숫자를 맞추면 1등인 로또게임이 있다. 추측한 로또 번호 배열과, 추첨된 번호 배열이 주어진다. 추측한 로또 번호 배열에는 몇 개의 숫자가 0으로 초기화 되어있고, 0으로 초기화된 숫자까지 맞혔을 때의 순위(최고 순위) 와, 둘 다 틀렸을 때의 순위(최저 순위)를 예측해서 리턴하는 문제 풀이 function solution(lottos, win_nums) { /..

    [알고리즘 JS] 다트 게임 (프로그래머스 Lv.1)

    문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정말 오랜만에 알고리즘 문제 풀이! 지금까지 나름 꾸준히 풀긴 했는데 기록으로 남기질 않은 것 같아서 다시 정리해본다. 본 문제는 다트게임이라는 문제로, 문제에서 제시되는 상황을 정리하면 아래와 같다. 총 3번의 게임 기회가 있다. 각 라운드당 획득 점수는 1 ~ 10점 이다. S, D, T 각각 1, 2, 3만큼 거듭제곱되는 영역이 있다. *, # 같은 옵션이 하나씩만 붙을 수 있다. * 기호의 경우 이전에 획득한 점수, 현재 획득한 점수 *2배, #의 경우 현재 점수를 음수로 바꾼다. 예를들어 1D#..

    [알고리즘 JS] 쇠막대기 (Stack)

    문제 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저의 배치는 다음 조건을 만족한다. • 쇠막대기는 자신보다 긴 쇠막대기 위에만 놓일 수 있다. - 쇠막대기를 다른 쇠막대기 위에놓는 경우 완전히 포함되도록 놓되, 끝점은 겹치지 않도록 놓는다. • 각 쇠막대기를 자르는 레이저는 적어도 하나 존재한다. • 레이저는 어떤 쇠막대기의 양 끝점과도 겹치지 않는다. 이러한 레이저와 쇠막대기의 배치는 다음과 같이 괄호를 이용하여 왼쪽부터 순서대로 표현할 수 있다. 1. 레이저는 여는 괄호와 닫는 괄호의 인접한 쌍 ‘( ) ’ 으로 표현된다. 또한, 모든 ‘( ) ’는 반드시 레이저를 ..