전체 글
[JS] 프로그래머스 lv1. 삼총사
문제 설명 한국중학교 학생들의 번호를 나타내는 정수 배열 number가 매개변수로 주어질 때, 학생들 중 삼총사를 만들 수 있는 방법의 수를 return 하도록 solution 함수를 완성하세요. 제한사항 3 ≤ number의 길이 ≤ 13 1,000 ≤ number의 각 원소 ≤ 1,000 서로 다른 학생의 정수 번호가 같을 수 있습니다. 입출력 예number result [-2, 3, 0, 2, -5] 2 [-3, -2, -1, 0, 1, 2, 3] 5 [-1, 1, -1, 1] 0 입출력 예 설명 문제 예시와 같습니다. 입출력 예 #2 학생들의 정수 번호 쌍 (-3, 0, 3), (-2, 0, 2), (-1, 0, 1), (-2, -1, 3), (-3, 1, 2) 이 삼총사가 될 수 있으므로, 5를..
[JS] 프로그래머스 3진법 뒤집기
문제 설명 자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. 입출력 예 n result 45 7 125 229 입출력 예 #1 답을 도출하는 과정은 다음과 같습니다. n (10진법) n (3진법) 앞뒤 반전(3진법) 10진법으로 표현 45 1200 0021 7 따라서 7을 return 해야 합니다. function solution(n) { let arr=[] while(n>0){ arr.push(n%3) n=parseInt(n/3) } return arr.reverse().map((v,i)=>v*(3**i)).reduce((a,b)=>a+b,0) } 나의 풀이 전략 10..
[JS] var, let, const 와 호이스팅(Hoisting)
변수 선언 방식은 var, let, const 3가지가 있는데 var 로 선언이 가능했는데 왜 const 와 let 이 나오고 var은 이제 더 이상 권장하지 않는 것일까? var 키워드로 선언한 변수의 문제점 1) var키워드로 선언한 변수는 중복 선언이 가능하다. var x=1; var y=1; //var키워드로 선언된 변수는 같은 스코프 내에서 중복 선언을 허용 //초기화 문이 있는 변수 선언문은 자바스크립트 엔진에 의해 var키워드가 없는 것처럼 동작 var x=100; var y;//초기화문이 없으므로 이 변수 선언문은 무시됨 console.log(x);//100 console.log(y);//1 이 예제의 var 키워드로 선언한 x변수와 y변수는 중복 선언되었다. 이처럼 var 키워드로 선언한..
[JS] 모던 자바스크립트 Deep Dive 7장 - 연산자
연산자란? 연산자는 하나 이상의 표현식을 대상으로 산술, 할당, 비교, 논리, 타입, 지수 연산 등을 수행하여 하나의 값을 만든다. 이때 연산의 대상을 피연산자라고 한다. 피연산자, 그리고 피연산자와 연산자의 조합으로 이루어진 연산자 표현식은 값으로 평가될 수 있는 표현식이다. 7. 1 산술 연산자 산술 연산자는 피연산자를 대상으로 수학적 계산을 수행해 새로운 숫자 값을 만든다. 산술 연산이 불가능한 경우, NaN을 반환한다. 7.1.1 이항 산술 연산자 연산자 의미 부수 효과 + 덧셈 x - 뺄셈 x * 곱셈 x / 나눗셈 x % 나머지 x 7.1.2 단항 산술 연산자 연산자 의미 부수효과 ++ 증가 o -- 감소 o + 효과 없음 x - 양수를 음수로, 음수를 양수로 반전한 값 반환 x 7.1.3 문..
[JS] 모던 자바스크립트 Deep Dive 6장 - 데이터 타입
6장 - 데이터 타입 자바스크립트의 모든 값은 데이터 타입을 갖는다. 자바스크립트(ES6)는 7개의 데이터 타입을 제공한다. 구분 데이터 타입 설명 원시 타입 숫자 타입 숫자, 정수, 실수 구분 없이 하나의 숫자 타입만 존재 문자열 타입 문자열 불리언 타입 논리적 참과 거짓 undefined 타입 var 로 선언된 변수에 암묵적으로 할당된 값 null 타입 값이 없다는 것을 의도적으로 명시할 때 사용하는 값 symbol 타입 ES6에서 추가된 7번째 타입 객체 타입 객체, 함수, 배열 등 6.1 숫자 타입 자바스크립트는 독특하게 하나의 숫자 타입만 존재한다. ECMAScript 사양에 따르면 숫자 타입의 값은 배정밀도 64비트 부동소수점 형식을 따른다. 즉, 모든 수를 실수로 처리하며 정수만 표현하기 위..
[JS] 모던 자바스크립트 Deep Dive 5장 - 표현식과 문
5.1 값 값은 표현식이 평가되어 생성된 결과를 말한다. 평가란, 식을 해석해서 값을 생성하거나 참조하는 것을 의미한다. 모든 값은 데이터 타입을 가지며, 메모리에 2진수, 즉 비트의 나열로 저장된다. 메모리에 저장된 값은 데이터 타입에 따라 다르게 해석될 수 있다. 5.2 리터럴 리터럴은 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법을 말한다. 자바스크립트 엔진은 코드가 실행되는 시점은 런타임에 리터럴을 평가해 값을 생성한다. 즉, 리터럴은 값을 생성하기 위해 미리 약속한 표기법이라고 할 수 있다. 5.3 표현식 표현식은 값으로 평가될 수 있는 문이다. 즉, 표현식이 평가되면 새로운 값을 생성하거나 기존 값을 참조한다. 표현식은 리터럴, 식별자(변수, 함수 등의 이름), ..
[JS] 모던 자바스크립트 Deep Dive 4장 - 변수
4.1 변수란 무엇인가? 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름 (값의 위치를 가리키는 상징적인 이름 ) 프로그래밍 언어는 기억하고 싶은 값을 메모리에 저장하고 저장된 값을 읽어 들여 재사용하기 위해 변수라는 메커니즘을 제공 변수는 프로그래밍 언어의 컴파일러 또는 인터프리터에 의해 값이 저장된 메모리 공간의 주소로 치환되어 실행됨 변수를 통해 개발자가 직접 메모리 주소를 통해 값을 저장하고 참조할 필요 없이 변수를 통해 안전하게 값에 접근 가능 변수 이름을 통해 참조를 요청하면 자바스크립트 엔진은 변수 이름과 매핑된 메모리 주소를 통해 메모리 공간에 접근해서 저장된 값을 반환 메모리 공간에 저장된 값을 식별할 수 있는 고유한 이름을 변수 이름,..
[JS] 자바스크립트 동작원리
너무나도 어려운 자바스크립트 비동기 동작 자바스크립트는 싱글 쓰레드 언어입니다. 이 의미는 쉽게 풀어쓰면 한 번에 한 가지 일 밖에 처리할 수 없다는 것을 의미합니다. (어려운 용어로는 Call stack이 하나라고 표현 합니다) 동기적(쉽게 말하면 순차적,순서대로)으로 동작 -> 스택(쓰레드)이 하나밖에 없기 때문입니다. 그러나 시간이 오래걸리는 실행은 기다리지 않고 다른걸 먼저 실행합니다. 싱글 쓰레드이기 때문에 동기적으로 동작하는데 어떻게 다른걸 먼저 실행할까요?? 1분 이상이 시간이 소요되는 오래 걸리는 작업이 있다고 가정 해보겠습니다. 자바스크립트는 머리가 하나이기 때문에, 1분 동안 아무것도 안하고 기다리면 브라우저는 아무런 행동(화면 스크롤, 버튼 클릭…)도 하지 못하게 됩니다. 그렇다면 어..