본문 바로가기

DP3

줄 서는 방법 https://school.programmers.co.kr/learn/courses/30/lessons/12936 첫번째 풀이 (시간초과) 모든 경우를 구한 뒤 k번째 결과를 리턴했다. // 백트래킹 순열 function solution(n, k) { var answer = []; const arr = Array.from({length: n}, (_, i) => i+1); function bt(acc, remain) { if (!remain.length) { answer.push(acc); return; } for (const r of remain) { bt([...acc, r], remain.filter(e => e !== r)); } } bt([], arr); return answer[k-1]; } .. 2023. 12. 8.
[프로그래머스] 숫자 변환하기 https://school.programmers.co.kr/learn/courses/30/lessons/154538# 문제요점 세 연산의 모든 조합 숫자가 y초과하면 더이상 연산할 필요없다 첫번째 풀이 bfs (성공) 최소 연산 횟수 => bfs 를 생각했다. y가 x로 변환하는 방법 x미만의 결과가 나오는 연산은 고려할 필요없다 최소연산 횟수 만에 찾기위해 num /3, num/2, num-n 순으로 찾았다. function solution(x, y, n) { const queue = [{num: y, count: 0}]; while(queue.length) { const {num, count} = queue.shift(); // shift는 O(n); // x가 되는 연산을 찾음 if (num ===.. 2023. 12. 6.
[프로그래머스] 코딩테스트 공부 https://school.programmers.co.kr/learn/courses/30/lessons/118668 문제 설명 [본 문제는 정확성과 효율성 테스트 각각 점수가 있는 문제입니다.] 당신은 코딩 테스트를 준비하기 위해 공부하려고 합니다. 코딩 테스트 문제를 풀기 위해서는 알고리즘에 대한 지식과 코드를 구현하는 능력이 필요합니다. 알고리즘에 대한 지식은 알고력, 코드를 구현하는 능력은 코딩력이라고 표현합니다. 알고력과 코딩력은 0 이상의 정수로 표현됩니다. 문제를 풀기 위해서는 문제가 요구하는 일정 이상의 알고력과 코딩력이 필요합니다. 예를 들어, 당신의 현재 알고력이 15, 코딩력이 10이라고 가정해보겠습니다. A라는 문제가 알고력 10, 코딩력 10을 요구한다면 A 문제를 풀 수 있습니다... 2023. 11. 25.