분류 전체보기

[인프런] Node.js / 섹션2 - 1, 2차원 탐색 / 5. 등수구하기

점수가 입력되면 각 학생의 등수를 입력된 순서대로 출력 나의 풀이 function solution(arr) { let answer = []; let order = []; let array = arr.slice(); // 오름차순으로 정렬 for (let i = 0; i < arr.length; i++) { order.push(Math.max(...array)); array.splice(array.indexOf(Math.max(...array)), 1); // 해당 값 지우기 } // 순위 매기기 for (let i = 0; i < arr.length; i++) { answer.push(order.indexOf(arr[i]) + 1); } return answer; } let arr = [87, 92, 9..

[인프런] Node.js / 섹션2 - 1, 2차원 탐색 / 4. 점수계산

앞의 문제에 대해서는 답을 틀리다가 답이 맞는 처음 문제는 1점으로 계산 연속으로 문제의 답이 맞는 경우에서 두 번째 문제는 2점, 세 번째 문제는 3점, ..., K번째 문제는 K점으로 계산 틀린 문제는 0점으로 계산 입력에서 1은 맞은경우, 0은 틀린경우다. 나의 풀이 function solution(arr) { let answer = 0; let cnt = 1; for (let i = 0; i < arr.length; i++) { if (arr[i] === 1) { answer += cnt; cnt++; } else { cnt = 1; } } return answer; } let arr = [1, 0, 1, 1, 1, 0, 0, 1, 1, 1]; console.log(solution(arr));

[인프런] Node.js / 섹션2 - 1, 2차원 탐색 / 3. 가위 바위 보

A가 이기면 A를 출력, B가 이기면 B를 출력, 비기면 D를 출력 1: 가위, 2: 바위, 3: 보 나의 풀이 function solution(a, b) { let answer = ""; for (let i = 0; i < a.length; i++) { if ( (a[i] === 1 && b[i] === 3) || (a[i] === 2 && b[i] === 1) || (a[i] === 3 && b[i] === 2) ) { answer += "A"; } else if ( (a[i] === 3 && b[i] === 1) || (a[i] === 1 && b[i] === 2) || (a[i] === 2 && b[i] === 3) ) { answer += "B"; } else { answer += "D"; } ..

[모던 자바스크립트 Deep Dive] 16장 - 프로퍼티 어트리뷰트

16.1 내부 슬롯과 내부 메서드내부 슬롯과 내부 메서드는 js 엔진의 구현 알고리즘을 설명하기 위해 ECMAScript 사양에서 사용하는 의사 프로퍼티와 의사 메서드ECMAScript 사양에 등장하는 이중 대괄호([[…]])로 감싼 이름들js 엔진의 내부 로직이므로 내부 슬롯과 내부 메서드에 직접적으로 접근하거나 호출할 수 있는 방법을 제공하지 않음.단, 일부는 제공하긴 함모든 객체는 [[Prototype]]이라는 내부 슬롯을 가짐. 이는 proto를 통해 간접적으로 접근할 수 있음const o = {};// 내부 슬롯은 자바스크립트 엔진의 내부 로직이므로 직접 접근할 수 없다.o.[[Prototype]] // -> Uncaught SyntaxError: Unexpected token '['// 단, ..

JavaScript 2023.01.07

[모던 자바스크립트 Deep Dive] 15장 - let, const 키워드와 블록 레벨 스코프

15.1 var 키워드로 선언한 변수의 문제점변수 중복 선언 허용초기화 문이 있는 변수 선언문은 js 엔진에 의해 var 키워드가 없는 것 처럼 동작 var x = 1;초기화 문이 없는 변수 선언문은 무시 var x;함수 레벨 스코프var 키워드로 선언한 변수는 함수의 코드 블록만을 지역 스코프로 인정변수 호이스팅var 키워드로 변수를 선언하면 변수 호이스팅에 의해 변수 선언문 이전에 참조 가능단, 할당문 이전에 변수를 참조하면 undefined 반환// 이 시점에는 변수 호이스팅에 의해 이미 foo 변수가 선언되었다(1. 선언 단계)// 변수 foo는 undefined로 초기화된다. (2. 초기화 단계)console.log(foo); // undefined// 변수에 값을 할당(3. 할당 단계)foo ..

JavaScript 2023.01.07

[모던 자바스크립트 Deep Dive] 14장 - 전역 변수의 문제점

14.1 변수의 생명 주기지역 변수의 생명 주기함수 내부에서 선언된 지역 변수는 함수가 호출되면 생성되고 함수가 종료하면 소멸한다변수 선언은 런타임 이전 단계에 먼저 실행되는데, 전역 변수에 한정된 것이다함수 내부에서 선언한 변수는 함수가 호출된 직후에 함수 몸체의 코드가 한 줄씩 순차적으로 실행되기 이전에 먼저 실행됨지역변수의 생명 주기는 함수의 생명 주기와 일치변수의 생명 주기는 메모리 공간이 확보된 시점부터 메모리 공간이 해제되어 가용 메모리 풀에 반환되는 시점까지함수 내부에 선언된 지역 변수는 함수가 생성한 스코프에 등록됨 함수가 생성한 스코프는 렉시컬 환경이라 부르는 물리적 실체가 있음 → 변수는 자신이 등록된 스코프가 소멸(메모리 해제)될 때까지 유효할당된 메모리 공간은 더 이상 누구도 참조하..

JavaScript 2023.01.07

[모던 자바스크립트 Deep Dive] 13장 - 스코프

13.1 스코프란?스코프: 식별자가 유효한 범위모든 식별자는 자신이 선언된 위치에 의해 다른 코드가 식별자 자신을 참조할 수 있는 유효 범위가 결정됨식별자 결정: 스코프를 통해 이름이 같은 두 개의 변수 중에서 어떤 변수를 참조해야 할 것인지 결정스코프는 식별자를 검색할 때 사용하는 규칙이라고 할 수 있음렉시컬 환경: 코드가 어디서 실행되며 주변에 어떤 코드가 있는지하나의 값은 유일한 식별자에 연결돼야 하므로 식별자인 변수 이름은 중복될 수 없음프로그래밍 언어에서는 스코프를 통해 식별자 충돌을 방지하여 같은 이름의 변수를 사용할 수 있게 함스코프 내에서는 식별자가 유일해야 하지만 다른 스코프에서는 같은 이름의 식별자를 사용할 수 있음var 키워드로 선언된 변수는 같은 스코프 내에서 중복 선언이 허용되지만..

JavaScript 2023.01.07

[모던 자바스크립트 Deep Dive] 12장 - 함수

12.1 함수란?함수: 일련의 과정을 문으로 구현하고 코드 블록으로 감싸서 하나의 실행 단위로 정의한 것매개변수: 함수 내부로 입력을 전달받는 변수인수: 입력반환값: 출력함수는 값이며, 식별자인 함수 이름을 사용할 수 있음함수는 함수 정의를 통해 생성// 함수 정의function add(x, y) { return x + y;}함수 호출을 통해 함수가 실행됨코드 블록에 담긴 문들이 일괄적으로 실행되고 실행 결과인 반환값을 반환12.2 함수를 사용하는 이유재사용 가능유지 보수의 편의성을 높임코드의 신뢰성을 높임적절한 함수 이름은 코드의 가독성을 향상시킴12.3 함수 리터럴함수는 객체 타입의 값함수 리터럴로 생성function 키워드, 함수 이름, 매개변수 목록, 함수 몸체로 구성함수 리터럴의 구성 요소구성..

JavaScript 2023.01.07