Programming
-
[백준]2018번 수들의 합5 with Node.jsProgramming/Algorithm 2023. 1. 31. 19:29
const input = require("fs").readFileSync("testInput.txt").toString().trim(); let answer = 0; let start = 1; let end = 1; let sum = 1; while(start = input){ sum -= start; start++; }; }; console.log(answer); 본 문제 또한 풀이가 존재하지 않아서 업로드 한다. 해당 문제는 자바스크립트에서 이중 포문을 사용하여 진행할 경우 시간초과가 발생하며, 투 포인터라고 불리는 while을 사용한 방법을 통하여 풀이해야한다.
-
[백준]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을..
-
유한 상태 기계(Finite-State Machine,FSM)와 블록체인에서의 구현Programming/BlockChain 2022. 10. 30. 21:56
블록체인 상에서 스마트 컨트랙트를 개발할 때 시스템 다이내믹스, 각 오퍼레이션의 상태 변화를 보여주는 역동성을 보여주기 위하여 UML 유한 상태 머신 혹은 FSM 다이어그램을 사용하는데. 여기서 유한 상태 머신(Finite-State Machine,FSM)이란, 정규 컴퓨터 공학과 수학에서 창안한 것으로 프로그램과 전자 논리 회로를 설계하는데 쓰이는 수학적 모델로 "상태 기계"라고도 불리며 스마트 컨트랙트에서 활용 되는 FSM 다이어그램은 조건과 시간에 따라 변화해가는 스마트 컨트랙트의 상태 변화를 나타낼 수 있으며, 중요한 역할을 한다고 볼 수 있다. 이러한 유한 상태 기계는 유한 오토마톤 또는 복수형의 유한 오토마타라고도 하는데 이름 그대로 유한한 개수의 상태를 가지는 오토마타, 기계를 뜻하며 추상 ..
-
try-catch와 비동기 작업에 대하여Programming/javascript 2022. 7. 24. 22:58
try catch문은 자바스크립트에서 예외처리에 사용된다. 이는 발생한 예외를 throw 했을 시 함수를 호출한 상위로 전파가 되는데 이 과정에서 예외처리를 하지 않는다면 컴파일러가 중단되며 만약 배포 서버에서 실행 중인 프로세스라면 중단될 수도 있기 때문에 반드시 이에 대비하여 예외 처리를 해둬야 한다. 하지만 이러한 예외처리 또한 아무때나, 아무 곳에서나 하면 곤란한 상황이 발생 할 수 있는데, 어떠한 Side Effect가 발생 할 수 있는 지 고려해 보자면 바로, 흔히 싱글 스레드인 자바스크립트에서 효율적인 작업 처리를 위하여 사용하는 비동기 시스템이다. 이는 동기 처리에서는 전혀 문제 없지만 비동기 처리는 앞서 말한 발생한 예외는 호출한 상위로 전파가 된다고 하였는데, 비동기 작업을 감싼 예외처..