Programming/Algorithm
-
[백준]9237번 이장님 초대 with Node.jsProgramming/Algorithm 2023. 1. 30. 18:34
const [N, ...t] = require("fs").readFileSync("testInput.txt").toString().trim().split("\n").map(v => v.split(" ").map(Number)); t[0].sort((a,b) => b-a); let result = 0; for (let i = 0; i < N; i++) { result = Math.max(result, t[0][i] + i + 1); }; result += 1; console.log(result); 노드로 풀이한 예제가 없어서 업로드 한다. result 값과 나무가 자라는데 필요한 일 수+현재 경과 일+ 나무 심는데 걸리는 하루를 더해주고 이장님이 다음날 방문하니 하루를 더 더하여 계산하여준다.
-
[백준]2693번 N번째 큰 수 with Node.jsProgramming/Algorithm 2023. 1. 25. 18:30
const [N,...input] = require("fs").readFileSync("/dev/stdin", "utf8").toString().trim().split(/\n/).map(v => v.split(" ").map(Number).sort((a,b) => a-b)); let result = []; for(let i = 0; i < N; i++){ result.push(input[i][input[i].length - 3]); }; console.log(result.join("\n")); readFileSync의 "utf8"은 오랜만에 그냥 넣어 보았으며, 기본 설정이 utf8이기 때문에 보통은 따로 기입을 안해줘도 무방하다. 브론즈1 난이도의 문제인데 구글링시 풀이 포스트가 안보여서 업로드 한다.
-
[백준]2477번 참외밭 with Node.jsProgramming/Algorithm 2022. 11. 20. 16:19
const [K,...arr] = require("fs").readFileSync("testInput.txt").toString().trim().split("\n").map(v => v.split(" ").map(v => Number(v))); let maxHeight = 0, maxWidht = 0; let maxHeightIdx = -1, maxWidhtIdx = -1; //전체 큰 사각형의 넓이를 구하고 작은 사각형의 넓이를 구하여 빼는 방법. for(let i = 0; i < arr.length; i++){ // if(arr[i][0] == 1 || arr[i][0] == 2){ //가로 방향 if(maxHeight < arr[i][1]){ //가로 최대값, 인덱스 저장 maxHeight = ar..
-
[백준]14425번 문자열 집합 with Node.jsProgramming/Algorithm 2022. 11. 18. 18:10
const [N,M,...arr] = require("fs").readFileSync("testInput.txt").toString().trim().split(/\s/); const S = new Set(arr.slice(0,arr.length-M)); //집합 S는 같은 문자열이 여러번 주어지지 않는다고 명시 const checkArr = arr.slice(arr.length-M); //그러므로 검사 문자열은 같은 문자열이 여러분 주어질 수 있다는 것. let result = 0; checkArr.forEach((v => { if (S.has(v)) result++; }) ); console.log(result); Set 객체를 활용하여 문제를 풀었는데, 최근들어 집합과 맵을 활용한 문제에서는 Set을..
-
[백준]1157번 단어 공부 with Node.jsProgramming/Algorithm 2022. 6. 25. 14:16
const input = require('fs').readFileSync('testInput.txt').toString().trim().toLowerCase().split(''); //입력 필드 중 중복 제거된 새 배열을 생성. const arr = input.filter((v,i) => input.indexOf(v) === i); //0으로 채운 카운팅용 배열 생성. let counting = new Array(arr.length).fill(0); //중복 제거된 배열과 입력 필드 간 중복 값 카운팅 배열에 저장 for(let i in input){ counting[arr.indexOf(input[i])]++; }; let max = counting[0]; //현재 값보다 이후 값이 높다면 갱신 for..
-
[백준]4101번 크냐? with Node.jsProgramming/Algorithm 2022. 6. 15. 22:28
const input = require('fs').readFileSync('/dev/stdin').toString().split('\n').map( v => v.split(' ').map(Number)); let i = 0; while(true){ if(input[i][0] === 0 && input[i][1] === 0) { break; }else if(input[i][0] > input[i][1]){ console.log('Yes'); }else{ console.log('No'); } i++; }
-
[백준]9020번 골드바흐의 추측 with Node.jsProgramming/Algorithm 2022. 4. 14. 23:54
//골드바흐의 추측 const input = require('fs').readFileSync("/dev/stdin").toString().trim().split("\n").map(v => +v); input.shift(); const MAX = Math.max(...input); const answer = []; //배열 생성하고 차후 소수를 판별 위해 트루로 채워줌 let prime = new Array(MAX + 1).fill(true); //소수와 아닌수를 구한다. for (let i=2;i*i1;i--) { if (prime[i] && prime[v-i]) { //소수로만 이루어진 쌍을 찾기위함, 골드바흐의 파티션을 이루는 수를 찾기 위함 answer.push(`${i} ${v-i}`) break..