연습장/프로그래머스 문제풀이

    [프로그래머스 Level 1] 대충 만든 자판 - JavaScript

    [프로그래머스 Level 1] 대충 만든 자판 - JavaScript

    🔗 문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/160586✏️ 풀이function solution(keymap, targets) { const minimumCountMap = keymap .reduce((acc, v) => ({ ...acc, ...[...v].reduce((keyAcc, char, i) => ({ ...keyAcc, [char]: Math.min( (keyAcc[char] ?? Number.MAX_VALUE), (acc[char] ?? Nu..

    [프로그래머스 Level 1] 개인정보 수집 유효기간 - JavaScript

    [프로그래머스 Level 1] 개인정보 수집 유효기간 - JavaScript

    🔗 문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/150370✏️ 풀이function solution(today, terms, privacies) { const termPeriodMap = terms.reduce((acc, term) => { const [termName, period] = term.split(' '); acc[termName] = Number(period); return acc; }, {}); const isExpired = (privacy) => { const [date, term] = privacy.split(' '); const ..

    [프로그래머스 Level 2] 전화번호 목록 - JavaScript

    [프로그래머스 Level 2] 전화번호 목록 - JavaScript

    🔗 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/42577 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ✏️ 풀이 function solution(phone_book) { return !phone_book .sort() .some((number, index) => index === phone_book.length - 1 ? false : phone_book[index + 1].startsWith(number) ); } 모든 전화번호를 자신을 제외한 나머지 다른 번호와 비교하는 것은 n..

    [프로그래머스 Level 2] 덧칠하기 - JavaScript

    [프로그래머스 Level 2] 덧칠하기 - JavaScript

    🔗 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/161989 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ✏️ 풀이 function solution(n, m, section) { let result = 0; let painted = 0; for (const wall of section) { if (painted >= wall) { continue; } painted = wall + m - 1; result++; } return result; } 가장 적게 페인트를 칠하려면 다시 칠해야..

    [프로그래머스 Level 3] 베스트앨범 - JavaScript

    [프로그래머스 Level 3] 베스트앨범 - JavaScript

    🔗 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/42579 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ✏️ 풀이 function solution(genres, plays) { const genreMap = {}; const genreCount = {}; plays.forEach((time, num) => { const genre = genres[num]; const highestCount = genreMap[genre]; genreCount[genre] = (genreCount[ge..

    [프로그래머스 Level 2] 소수 찾기 - JavaScript

    [프로그래머스 Level 2] 소수 찾기 - JavaScript

    🔗 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/42839 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ✏️ 풀이 function solution(numbers) { const primes = Array(1_000_000).fill(true); primes[0] = false; primes[1] = false; for (let i = 2; i { const num = Number(comb); let count = 0; if (primes[num] && !primeList[num]) {..

    [프로그래머스 Level 2] 스킬트리 - JavaScript

    [프로그래머스 Level 2] 스킬트리 - JavaScript

    🔗 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/49993 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ✏️ 풀이 function solution(skill, skill_trees) { const preSkills = [...skill].reduce((acc, v) => { acc[v] = true; return acc; }, {}); return skill_trees.reduce((acc, tree) => { const order = [...skill].reverse(); for (..

    [프로그래머스 Level 2] n^2 배열 자르기 - JavaScript

    [프로그래머스 Level 2] n^2 배열 자르기 - JavaScript

    🔗 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/87390 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ✏️ 풀이 function solution(n, left, right) { return Array.from({ length: right - left + 1 }, (_, i) => { const row = Math.floor((i + left) / n); const col = (i + left) % n; return Math.max(row, col) + 1; }); } 2차원 배열에서..

    [프로그래머스 Level 2] 미로 탈출 - JavaScript

    [프로그래머스 Level 2] 미로 탈출 - JavaScript

    🔗 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/159993 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ✏️ 풀이 function solution(maps) { const offset = [[0, 1], [0, -1], [1, 0], [-1, 0]]; const xLen = maps.length; const yLen = maps[0].length; const bfs = ([sx, sy], [ex, ey]) => { const visited = Array.from({ length: x..

    [프로그래머스 Level 3] 야근 지수 - JavaScript

    [프로그래머스 Level 3] 야근 지수 - JavaScript

    🔗 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/12927 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ✏️ 풀이 function solution(n, works) { class PriorityQueue { constructor() { this.heap = []; } push(value) { const { heap } = this; heap.push(value); let index = heap.length - 1; let parent = Math.floor((index - 1) / 2..