이벤트 루프
·
Stack/JavaScript
"이벤트 루프가 뭐예요?" 누군가 나에게 이렇게 묻다면 나는 자신 있게 답을 할 수 있을까? 솔직히 현재의 나는 명쾌하게 대답할 자신이 없다. 그래서 이 글은 미래의 나를 위해, 그리고 이 질문에 답하기 위해 작성하는 정리 노트다. 1. 자바스크립트는 싱글 스레드인데 어떻게 멀티태스킹을 할까?이벤트 루프를 논하기 전에 먼저 해결해야 할 의문이 있다. "자바스크립트는 싱글 스레드(Single Thread) 언어다." 이 말은 한 번에 하나의 작업만 할 수 있다는 뜻인데, 실제 우리가 쓰는 웹 사이트는 파일도 다운로드하고, 애니메이션도 보여주고, 서버 요청도 동시에 처리하는 것처럼 보인다. 이게 어떻게 가능한 걸까? . 자바스크립트 엔진은 '요청'만 보내고, 실제로 시간이 오래 걸리는 작업(네트워크, 타이머..
Object.assign vs Spread Syntax (...)
·
Stack/JavaScript
Object.assign 과 Spread Syntax (...) 둘 다 javascript에서 객체를 복사하거나 병합하는 방법이다.나도 일반적으로 Spread 문법을 주로 사용하고 Object.assign에 대해서는 무지했는데, 이에 대해 알아보기 위해 글을 작성해본다.Object.assign 사용예시const o1 = { a: 1 };const o2 = { b: 2 };const o3 = { c: 3 };const obj = Object.assign(o1, o2, o3);console.log(obj); // { a: 1, b: 2, c: 3 }console.log(o1); // { a: 1, b: 2, c: 3 }, 목표 객체 자체가 변경됨.console.log(o2); // { b: 2 };conso..
오픈채팅방 (42888 / 프로그래머스 / JavaScript)
·
알고리즘 문제풀이
문제 풀이과정 최종적으로 방을 개설한 사람이 보기 위해, uid 에따른 닉네임이 저장되어 있어야하는 배열을 생성하였다. record를 문자열별로 나눴는데, //record[i][0] => 입장, 퇴장, 변경 //record[i][1] => 유저ID //record[i][2] => 닉네임 다음과 같이 정리된다. answer 결과 배열부분에 uid 와 enter leave에 따른 메세지를 같이 저장하였다. 마지막에 answer에 있는 uid를 닉네임이 저장되어있는 곳과 매칭시켜 결과를 도출하였다. 풀이코드 function solution(record) { let users = []; // 유저의 닉네임이 저장되어있는곳 record = record.map((e) => e.split(' ')); ..
124나라의 숫자 ( 12899 / 프로그래머스 / JavaScript)
·
알고리즘 문제풀이
문제 풀이과정 숫자가 1, 2, 4 순서로 반복되며 값이 반복되는 형식이다. 값을 3으로 나눴을때 몫과 나머지를 구해서 answer에 나머지를 추가해주는 형식으로 답을 구했다. 다만 3으로 나눳을때 값이 1, 2, 0 순으로 된다 나머지 0일 경우 몫이 1개가 생기므로 새로운 값이 추가되는 현상이 발생하여 주어진 값을 -1 하여 나눳을때 값이 0,1,2 순으로 되게 만들어서 답을 구하였다. 기본 풀이코드 function solution(n) { let answer = ''; function oneTwoFour(n){ n = n - 1 let num = parseInt(n / 3); // 몫 let sub = n % 3; // 나머지 if(sub == 0){ answer = '1&#3..
자바스크립트 javascript 2진수 8진수 16진수 변환
·
Stack/JavaScript
자바스크립트에서 쉽게 진수 변환을 하는법 toString 과 parseInt를 이용하면 된다. 예시 let num = 122; console.log(num.toString(2)); //1111010 let binNum = "1111010" console.log(parseInt(binNum,2)); //122 toString() Number.prototype.toString() 에 해당하는 메서드이다. 특정한 Number 객체를 문자열로 반환 num.toString(radix) 매개변수 radix radix 는 2 ~ 36 사이의 정수가 들어간다. 2 ~ 36 사이의 정수가들어가지 않으면 RangeError가 발생한다. radix 값이 지정되지 않으면 default 값으로 10이 들어가게 된다. 예시 le..