본문 바로가기

Coding Test/Problem Solving

(6)
[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(..