전체 글 63

자바스크립트로 백준 1173 풀기

solved.ac 기준 브론즈 2단계 내 풀이) 어려운 문제도 아녔는데 조건 하나를 놓쳐서 30분을 고민했다. 최저 심박수 m, 최대 심박수 M 운동 1분당 오르는 심박수 T 휴식 1분당 내려가는 심박수 R 운동 N분을 하기 위해 필요한 운동 + 휴식 총 시간은? 단, 최대 심박수가 M을 초과하면 -1을 리턴한다. 즉, m + T > M 일 경우 return -1 단, 최소 심박수가 m 미만이 되면 최소 심박수를 m으로 간주한다. 즉, M - R < m 일 경우 현재 심박수는 m. 최소 심박수가 m 미만이 될 경우에도 운동을 못 하는걸로 착각해서 한참을 헤맸다. 백준 질문 게시판에서 나 같은 질문글을 보고서야 내가 무슨 조건을 놓쳤는지 깨달았다. (고마워요 스피드웨건!) 내 코드) // fs로 입력받는 ..

vs code에서 node:internal/fs/utils:350 throw err; ^Error: ENOENT: no such file or directory, open './input.txt' 에러 발생 시

0. 발생 오류 1. 문제 상황 백준 문제를 풀기 위해 코드를 작성하고 node.js 환경으로 run 시켰더니 다음과 같은 에러가 발생했다. fs 모듈이 input.txt 의 위치를 찾을 수 없다는 것이다. 그러나 분명 나는 경로도 제대로 썼고, 폴더 위치도 제대로 체크했었다. 2. 풀이 과정 알고보니 fs 모듈은 현재 파일 기준으로 경로를 잡는것이 아닌 실행하는 node 콘솔 기준으로 경로를 바라본다는 특징이 있었다. 즉, 내가 Post/알고리즘 연습/Solution_fs.js 파일을 실행했지만 경로가 Post/알고리즘 연습/ 에서 출발하는 게 아니라 node 콘솔이 깔려있는 위치에서부터(보통은 최상위 폴더) 실행된다는 것. 따라서 어디에 node 콘솔이 실행된 건지 파악하기 위해 fs.writeFil..

자바스크립트로 백준 10869번 풀기

브론즈 5단계 > 10869번 사칙 연산 1. 내 풀이) 간단한 문제이지만 js로 입력 받는 것을 연습하기 위해 풀어보았다. 1. readline으로 입력받을 때 // readline으로 푸는 경우 function solution(num1, num2) { console.log(num1 + num2); console.log(num1 - num2); console.log(num1 * num2); console.log(Math.floor(num1 / num2)); console.log(num1 % num2); } const readline = require("readline").createInterface({ input: process.stdin, output: process.stdout, }); let in..

자바스크립트로 백준 10998 풀기

내 풀이) readline으로 입력 받는 법. const readline = require('readline').createInterface({ input: process.stdin, output: process.stdout, }); let input = []; readline.on('line', function(line) { input.push(line.split(" ")); }).on('close', function(){ console.log(Number(input[0][0]) * Number(input[0][1])); process.exit(); }); fs로 입력 받는 법 const fs = require('fs'); const input = fs.readFileSync("/dev/stdin")...

백준에서 javascript로 문제 푸는 법 총정리 (feat. 입력 받는 법)

1. 백준에서 javascript로 문제 푸는 법 백준에선 javascript 언어를 지원하지 않는다. js로 풀려면 node.js를 선택해서 풀어야 한다. 따라서 우리는 node.js를 선택해서 풀어야 한다. 그런데 node.js로 풀 때 문제가 있다. 어떻게 입력값을 받고 출력하는가? 입력에는 realine 혹은 fs 모듈을 쓰고, 출력에는 console.log() 메소드를 쓰자. readline 사용하기 // 1. 입력값이 한 줄에 한 개 뿐일 때 string 형 값을 가져온다. const readline = require(&#39;readline&#39;).createInterface({ input: process.stdin, output: process.stdout, }); let input =..

CSS 클래스 이름을 짓는 규칙, BEM

0. 오늘의 배울 것 프로젝트를 짜다보면 클래스 이름을 지을 때가 가장 난감하다. 조악한 영어 실력으로 단어 더듬더듬 이어가며 클래스 이름을 지으니 자꾸 이름이 겹치고 헷갈리고 만다. 그래서 이번 포스팅에서는 네이밍 방법론 중 하나인 BEM에 대해 알아보려 한다!! 클래스든, 변수든, 함수든, 남들이 (+ 미래의 나) 알아보기 쉽게 이름을 짓는 것은 매우 중요하다! 이렇게 네이밍하는 데에 사람들이 만들어둔 규칙들이 있다. 여러가지 방법론이 있지만, 오늘은 그 중에서도 많은 곳에서 채택된 BEM 방법론에 대해 알아볼 것이다. 1. BEM이란? B lock E lement M odifier 의 줄임말로, 클래스 이름을 지을 때 block - element - modifier 순으로 이름을 짓자는 방법론이다...

JavaScript로 프로그래머스 풀기, 추억 점수

내 풀이) 좀 더 연산을 효율적으로 하기 위해, name과 yearning을 맵핑한 객체를 만들자. 추억 점수는 number 범위를 넘지 않으므로, 일반적인 연산을 해도 좋다. 내 코드) function solution(name, yearning, photo) { const score = {}; name.forEach((el, i) => { score[el] = yearning[i]; }); const answer = photo.map((els) => { let sum = 0; els.forEach((el)=>{ sum += score[el] ?? 0; }); return sum; }); return answer; } 여기서, 연습 겸 sum 을 구할 때엔 reduce 메소드를 활용한다면 아래 코드와 같..

fetch 함수에서 Async와 await 키워드 써보기.

0. 오늘의 배울 것. 비동기 실행 코드에서 쓰이는 async 와 await 키워드에 대해 알아보자!! 이 키워드를 쓰지 않아도 비동기문을 쓸 수는 있지만, 이걸 쓰는 게 더 가시적으로 좋다. 잘 알아보고 활용하자. 1. async와 await async와 await를 쓰면 우리가 앞에서 쓴 fetch then 문보다 더 간단하게 쓸 수 있다. 우리가 이때껏 배운 코드 fetch("url") .then((response)=>response.text()); .then((result)=>{console.log(result);}); 위의 코드를 async await로 바꾸기 async function fetchAndPrint() { const response = await fetch("url"); const ..

promise 객체 공부 기록.

0. 오늘의 배울 것. promise 객체가 비동기 실행을 하게 해주는 객체임을 배웠다. 오늘은 좀 더 심화 내용을 배워보자. 왜 promise 객체가 필요한지, promise 객체를 직접 만들어볼 수는 없는지 등!! 1. promise 객체는 왜 있는 걸까? fetch 함수에 그냥 바로 콜백 함수를 인자로 주면 안되는 걸까? 함수에 콜백을 직접 넣는 방식은 콜백 헬 callback hell이라는 문제를 일으킬 수 있다. 지옥의 피라미드라고도 불리는 콜백 헬은 코드 가독성이 겁나 떨어지는 현상을 말한다. promise 객체를 활용하면 가독성이 좋아지고 여러 비동기 작업을 순차적으로 처리하면서 callback hell 문제를 해결할 수 있다 뿐만 아니라 promise 객체에는 비동기 작업에 관한 세밀한 개..

fetch 함수와 비동기 실행

0. 오늘의 배울 것. 코드가 실행되는 방식에는 비동기 실행과 동기 실행으로 나뉜다. 일반적으론 동기 실행이지만, fetch 함수 같은 건 비동기적으로 실행된다. 이번 시간에는 비동기 실행이 무엇인지 알아보고!! 그다음 fetch 함수가 리턴하는 promise 객체가 무엇인지, fetch함수의 원리는 무엇인지 더 자세히 알아볼 예정이다. 1. 비동기 실행이 무엇인가? 웹 통신은 비동기적으로 실행된다. 즉, 순차적으로 실행되는 게 아니라 console에서 작동하는 와중에 request와 response가 와리가리 병렬적으로 지들끼리 통신하는 것이다. // 1번 실행 console.log("start"); // 리스폰스 받아야 실행되므로 기다림... 그 와중에 밑에 console end가 먼저 실행되고, 그..