반응형

Develop/백준 코딩테스트 19

백준 코딩테스트 1715 자바스크립트 node.js

진짜 제일 어려운 문제였다 문제 자체는 쉬운데 구현하는게 너무 어려웠던 것 같다. 정답을 보고 이해하는데도 엄청나게 오랜 시간이 걸렸다. 이 공부를 계속 하는게 맞나 싶을 정도로.. 이 문제는 제일 작은 수 두개를 더해서 배열에 계속 쌓고 또 제일 작은 두 수를 더해서 배열에 쌓고 하는 방식으로 푼다. 이걸 생코딩으로 풀어버리면 시간초과로 오답처리가 된다. 그래서 최소힙 이라는 알고리즘으로 풀어야 한다. 문과인 나에게는 처음들어보는 멍멍이 소리였다. 아래 블로그를 보았고 이해하는데 큰 도움이 되었다. 아래 블로그에서 개념을 잡고 넘어가시길 강력히 추천드린다. https://reakwon.tistory.com/42 [자료구조] 그림으로 쉽게 보는 힙(Heap) 개념과 코드 힙(Heap) 개념 힙이라는 자료..

백준 코딩테스트 10610 30 자바스크립트 node.js

정답 let input= require('fs').readFileSync('/dev/stdin').toString().trim().split('\n'); sol(input) function sol(input){ let arr = input.toString().split('').map(i => +i); if(!arr.includes(0)){ console.log(-1); }else{ let sum = arr.reduce((cur,val) => cur+val, 0); if( sum % 3 !== 0){ console.log(-1); }else{ arr.sort((a,b)=>b-a); console.log(arr.join('')); } } } 풀이 1. 30은 10 * 3 즉 10의 배수이면서 3의배수여야 한..

백준 코딩테스트 1789 수들의 합 자바스크립트 node.js

정답 //let input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n'); let input = require('fs').readFileSync('./input.txt').toString().trim().split('\n'); sol(+input) function sol(input){ let sum = 1; let count = 1; while(sum input){ count--; } console.log(count); } 풀이 문제가 엉터리다 그냥 넘기자 이 문제가 성립되려면 연속되는 숫자중 가장 큰 수 라고 했어야한다

백준 코딩테스트 10162 전자레인지 자바스크립트 node.js

정답 const input = require('fs').readFileSync('./input.txt').toString().trim().split('\n'); sol(Number(input)); function sol(input){ let result = ""; result = Math.floor(input/300) + ' '; input = input%300; result += Math.floor(input/60) + ' '; input = input%60; result += Math.floor(input/10); input = input%10; if( input !== 0){ result = -1; } console.log(result); } 풀이 간단하다 그냥 초로 변환해서 쭉 나누면 되고 마지막..

백준 코딩테스트 5585 거스름돈 자바스크립트 node.js

정답 const input = require('fs').readFileSync('/dev/stdin').toString(); solution(Number(input)); function solution(input){ input = 1000-input; let money = [500, 100, 50, 10, 5, 1]; let result = 0; for(let m of money){ result += Math.floor(input/m); input = input%m; } console.log(result); } 풀이 입력값의 거스름돈의 최소 갯수를 구하는 문제로 1000 - 입력값을 해주고 거스름돈이 큰 순서대로 나눠서 몫을 구하고 나머지 값으로 또 몫을 구하고,, 반복

백준 코딩테스트 1026 보물 자바스크립트 node.js

정답 let input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n'); let count = Number(input.shift()); let arrA = input[0].split(' ').map(i => Number(i)); let arrB = input[1].split(' ').map(i => Number(i)); solution(count, arrA, arrB); function solution(count, arrA, arrB){ let result = 0; arrA.sort((a,b) => a-b); arrB.sort((a,b) => b-a); for(let i=0; i < count; i++){ result +=..

반응형