Study/Algorithm
[BEAKJOON / node.js] 1931 회의실 배정
https://www.acmicpc.net/problem/1931 // test.txt 11 1 4 3 5 0 6 5 7 3 8 5 9 6 10 8 11 8 12 2 13 12 14 최대한 많은 회의를 열려면 종료시간이 빠른 회의 순으로 정렬 후 끝나자마자 바로 시작 가능한 회의의 개수를 세면 된다. sol1 let [num,...input] = require('fs').readFileSync('test.txt').toString().trim().split('\n'); arr = input.map(v => v.split(' ').map(i => Number(i))) let time = arr.sort((a,b) => a[1] - b[1]||a[0]-b[0]) let end = 0; let answer =..
<BEAKJOON / node.js> 11047 동전 0
https://www.acmicpc.net/problem/11047 // test.txt 10 4790 1 5 10 50 100 500 1000 5000 10000 50000 그리디 문제에 처음 도전 해보았다. 그래서 내장함수 보다는 while 이나 for 문을 사용해 케이스를 탐색해보는 식으로 해결했다. so1 으로 제출해 문제는 맞췄지만, 시간이 1900ms나 나와버려서.. 다른 해결 방법을 찾아봤다. sol1 let [n,...input] = require('fs').readFileSync('test.txt').toString().trim().split('\n'); let [num,price] = n.split(' '); price = Number(price); function solution(nu..
<programmers / JavaScript> 로또의 최고 순위와 최저 순위
https://programmers.co.kr/learn/courses/30/lessons/77484 switch 문으로 나누기에 경우의 수가 너무 많이 나와서, filter() 메서드를 이용하기로 한다. sol 1 const lottos = [44, 1, 0, 0, 31, 25]; const win_nums = [31, 10, 45, 1, 6, 19]; const rank = [6,5,4,3,2,1]; let answer = []; const min = lottos.filter(v => win_nums.includes(v)).length; const max = lottos.filter(v => v === 0).length + min; rank.includes(min) ? answer.push(rank...
[programmers / JavaScript] K번째 수
https://programmers.co.kr/learn/courses/30/lessons/42748 배열의 범위를 주고, 범위 내에서 k번째 수를 구하는 문제다. 처음엔 splice() 메서드를 사용했지만, splice()는 원본 배열을 변경시키기 때문에 slice() 메서드를 이용해 풀었다. sol 1 const array = [1, 5, 2, 6, 3, 7, 4]; const commands = [[2, 5, 3], [4, 4, 1], [1, 7, 3]]; function solution(array,commands) { let answer = []; commands.forEach(v => { const arr = array.slice(v[0]-1,v[1]); arr.sort((a,b) => a-b)..
[BEAKJOON / node.js] 5533 유니크
https://www.acmicpc.net/problem/5533 삼중 for문으로 배열을 만들어 해결하려 했다. 이중 for문까지는 각 행을 탐색하고, 삼중 for문에서 각 열에 동일한 숫자가 있는지 확인하는 방법이다. 애초에 for문이 삼중으로 들어가는 논리도 아직 낯설뿐더러 scope 지정에서 문제가 생기고 결정적으로 코드가 너무 더러워 보였다,, for문을 최대한 자제하는 방법으로 찾아보았다. const [n, ...strs] = require('fs').readFileSync('test.txt').toString().trim().split('\n'); const arr = strs.map(str => str.split(' ').map(Number)); let arrMap = Array.from(..
[programmers / JavaScript] 숫자 문자열과 영단어
https://programmers.co.kr/learn/courses/30/lessons/81301 let s = "one4seveneight" // result 1478 문자열을 숫자로 바꿔야 하기에 자연스럽게 숫자를 기준으로 잘라서 바꿔야겠다고 생각했다. 전개연산자를 써보고, 숫자를 기준으로 나눠진 배열을 조합해 어떤 숫자로 치환할지 정했는데, 말도 안되는 작업이란걸 깨달아버렸다. 배열로 쪼개진 ["one"] 혹은 ["o","n","e"] 입력을 숫자로 바꾸려 했다니,, sol 1 const s = "one4seveneight" function solution(s) { let answer = ""; const numbers = ["zero", "one", "two", "three", "four", ..
<BEAKJOON / node.js> 10828 스택
https://www.acmicpc.net/problem/10828 스택을 이용한 문제는 처음 풀어보았는데, if와 else if 문으로 짜다가 에러의 벽을 넘지 못했다,, 다른 분들의 코드를 참조해서 해결했는데, 문제를 어떤 방식으로 해결하셨는지 분석해본다. const input = []; require("readline") .createInterface(process.stdin, process.stdout) .on("line", (line) => { input.push(line); }) .on("close", () => { console.log(solution(input)); process.exit(); }); //////////////백준 입출력/////////////// function solut..
<BEAKJOON> 4344 JavaScript
for문을 이용해 각 배열의 첫 요소로 주어지는 배열의 개수와 평균을 구하고 .toFixed() 메서드를 이용해 답을 구해보려 한다. const input = require('fs').readFileSync('test.txt').toString().split('\n'); const max = input[0]; for(let i=1;iacc+=v*1,0); average /= scope; for(let j=1;javerage) { cnt++; } } let result = ((cnt/scope)*100).toFixed(3); console.log(`${result}%`) } // 40.000% // 57.143% // 33.333% // 33.333% // 44.444% 계산 방식엔 문제가 없는 것 같은데..