Coding Test (9) 썸네일형 리스트형 [프로그래머스 고득점 Kit / 깊이/너비 우선 탐색(DFS/BFS) 깊이/너비 우선 탐색(DFS/BFS)DFS(Depth-First Search)와 BFS(Breadth-First Search)는 그래프나 트리 구조에서 노드를 탐색하는 대표적인 알고리즘DFS : DFS는 한 경로를 끝까지 탐색한 후, 다른 경로를 탐색하는 방식"깊이"를 우선적으로 탐색하며, 더 이상 갈 곳이 없으면 이전 경로로 돌아옴(백트래킹)BFS : BFS는 현재 노드와 인접한 노드를 모두 방문한 후, 다음 단계로 넘어가는 방식"너비"를 우선적으로 탐색하며, 한 레벨씩 차례대로 방문LV2. 타겟 넘버 (정답률 63%)모든 경우의 수를 탐색해야 하므로, DFS(깊이 우선 탐색)를 사용했다. DFS를 통해 각 숫자에 + 또는 -를 선택하며 끝까지 탐색한 뒤, 합이 목표 값과 일치하면 카운트를 증가시키는 .. [프로그래머스 고득점 Kit / 완전탐색] 완전탐색완전탐색은 가능한 모든 경우를 하나씩 시도하며 답을 찾는 방법문제를 해결하기 위해 모든 경우의 수를 탐색하기 때문에 정확한 답을 보장하지만, 경우의 수가 많아지면 비효율적일 수 있음주로 반복문, 재귀(DFS), 백트래킹 등을 활용해 구현장점: 구현이 간단하고 정확한 답을 보장단점: 입력 크기가 커지면 비효율적완전탐색은 입력 크기가 작거나 최적화가 필요 없는 문제에서 유용하게 사용됨LV1. 최소직사각형 (정답률 74%)각 명함의 가로와 세로 중 큰 값과, 작은 값을 따로따로 리스트에 저장한 뒤, 각각의 최댓값을 곱하여 해결했다.내 풀이function solution(sizes) { const maxList = []; const minList = []; sizes.forEach(s=>.. [Softeer/LV3. 택배 마스터 광우/스마트 물류] LV3. 택배 마스터 광우 (정답률 82.44%)주어진 레일의 순서를 적절히 정렬하여, K번의 작업 동안 택배 바구니의 무게 합을 최소화하는 문제dfs의 정석!? 모든 레일의 경우를 생각하기내 풀이const fs = require('fs');const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');// N: 레일 개수, M: 바구니 최대 무게, K: 작업 시행 횟수const [N, M, K] = input[0].split(' ').map(Number);const railList = input[1].split(' ').map(Number);let min = Infinity; // 최소 무게 합// 주어진 레일 순서에서 K번 작업 동.. [Softeer/LV3. 나무 조경/순서대로 방문하기/루돌프 월드컵] LV3. 나무 조경 (정답률 72.70%)주어진 격자 형태의 정원에서 나무의 높이가 주어졌을 때, 특정 조건에 따라 나무를 그룹으로 묶어 최대의 결과를 계산하는 문제문제는 나무를 그룹화하는 방식과 계산 조건이 복잡하여 여러 시도를 했으나 실패로 끝났음 ..ㅠ첫번째 풀이 (오답)const fs = require('fs');const input = fs.readFileSync('/dev/stdin').toString().trim().split("\n")const n = parseInt(input[0])const garden = input.slice(1).map(i=>i.split(" ").map(Number))const all = garden.reduce((a, c) => { for (let i = 0.. [프로그래머스/LV2. 124 나라의 숫자/영어 끝말잇기/괄호 회전하기] LV2. 124 나라의 숫자(정답률 51 %)처음에는 1, 2, 4만 사용하는 체계가 3진법과 비슷해 보였기 때문에 이를 활용하려 했다.그런데 일반적인 3진법과 달리 124 나라의 숫자에서는 '0'이 존재하지 않고, '3'이 '4'로 치환되며 자리 올림이 발생하는 규칙이 있었다.그래서 단순히 3진법으로 변환한 뒤 치환하는 방식으로는 해결하지 못했다.풀이 (오답)function solution(n) { const pattern = ['1', '2', '4']; // 124 나라의 숫자 패턴 const array = [...n.toString(3)]; // n을 3진법으로 변환 let beforeZero = false; // 이전에 자리 올림(0)이 발생했는지 여부 const newAr.. [프로그래머스/LV2. 피보나치 수/점프와 순간이동/스킬트리/오픈채팅방] LV2. 피보나치 수(정답률 74 %)주어진 숫자 n에 대해 피보나치 수열의 n번째 값을 구하는 문제로, 결과값은 1234567로 나눈 나머지를 반환해야 함fibo(n)을 재귀적으로 정의하여 이전 두 수를 더한 값을 리스트에 추가하는 방식으로 구현!내 풀이function solution(n) { const list = [0, 1]; function fibo(n) { return (list[list.length - 1] + list[list.length - 2]) % 1234567; } for (let i = 2; i 피보나치 수열을 저장할 배열 list를 선언하고 초기값으로 [0,1]을 설정fibo(n) 함수는 list의 마지막 두 값을 더한 뒤, 1234567로 나눈 .. [Softeer/LV2. 금고털이/바이러스] LV2. 금고털이(정답률 40 %)Greedy를 사용한 문제!주어진 금속 관련 배열을 비싼 순서대로 정렬 후 배낭에 남은 무게만큼 넣도록 구현했다.내 코드const fs = require('fs');const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n')let w = parseInt(input[0].split(' ')[0]) // 남은 무게const jewelries = input.slice(1).map(s=>s.split(' '));jewelries.sort((a,b)=>b[1]-a[1]); // kg당 무게 기준 내림차순 정렬let answer = 0;for (const [m,p] of jewelries) { const .. [Softeer/LV2. 나무공격/연탄의 크기] LV2. 나무공격(정답률 80.57 %)격자 형태로 주어진 숲에서 각 행에 있는 환경파괴자의 수가 주어질 때, 두 번의 공격 범위가 주어졌을 때의 결과를 계산하는 문제행별로 환경파괴자를 구해서 count하는 방식으로 구현했다.내 코드const fs = require('fs');const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n')// n개의 줄, m개의 격자정보const [n,m] = input[0].split(' ');const tile = input.slice(1,input.length-2)// 공격 (l부터 r번째 행까지 공격)const [l1, r1] = input[input.length-2].split(' ').map(.. 이전 1 2 다음