목록전체 글 (13)
나 이것도 몰랐네..
새로운 Array 생성1. 값이 정해지지 않은 배열 생성하기let arr1 = [];let arr2 = new Array();console.log(arr1);// Expected output : Array []console.log(arr2);// Expected output : Array [] 대괄호('[]')를 이용하거나 Array() 생성자 함수를 통해 새로운 배열을 생성할 수 있다.Javascript에서는 배열의 크기가 동적으로 변경될 수 있기에 인덱스로 배열 내에 요소를 추가할 수 있으며 값이 지정되지 않은 인덱스의 경우, undefined의 값이 출력된다. 2. 초기 배열의 크기를 지정한 배열 생성하기let arr3 = [,,,];let arr4 = new Array(4);console.log(..
우리는 일상생활에서 흔히 10진법(0 ~ 9 / 10가지 숫자)을 사용하지만 컴퓨터는 이진법(0,1 / 2가지 숫자)을 이용한다. 이는 대부분이 알고 있지만 왜 익숙한 10진법이 아닌 2진법을 적용하였나 궁금증이 생겨 찾아보았다. 컴퓨터의 진법기계로 구현하기에 용이하며, 사용자의 일 처리를 빠르게 하고 오류를 최소화하기 위해서 이진법이 사용된다. 컴퓨터는 전기 신호를 통해 트랜지스터라는 스위치를 ON/OFF 시키는 행위를 반복하는데, 이때 들어온 신호를 0과 1, 이진법을 사용하여 처리한다.만약 3진법 이상의 진법을 사용하는 경우에는 전기적 신호를 3가지 이상의 경우로 구분지어야 한다. 그렇게 되면 처리 소요 시간 및 비용, 오류 발생량이 증가하게 되는 단점이 있다. 따라서 컴퓨터는 자릿수가 많다는 단점..
숫자 10개를 입력받아 이를 42로 나눈 서로 다른 나머지 값의 개수를 구하여라. 접근 방식0이 42개 있는 array를 생성 후, 입력받은 값을 42로 나눈 값에 해당하는 인덱스에 1씩 더한다.이 후 array에서 0보다 큰 값이 있는 인덱스의 개수를 구해 출력한다. 구현 코드let rl = require('readline').createInterface({ input: process.stdin, output: process.stdout,})let input = [];rl.on('line', li=>{ input.push(Number(li.trim()));}).on('close', _ => { remainder(input); process.exit();});function r..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/dprfdo/btsHBOXV9hx/uuSNCxyaGEt58pwg57TsZK/img.png)
내 데스크톱과 노트북은 버튼을 누르면 어떻게 실행되는가, 왜 전원을 꺼도 저장한 데이터는 사라지지 않는가, 내가 입력한 코드는 어떤 과정을 거쳐 실행되는가에 대한 궁금증이 생겨 여러 책과 사이트를 찾아 알게된 내용을 정리한다.컴퓨터의 구조1. 폰 노이만 컴퓨터 구조폰 노이만 구조는 제어장치와 산술연산장치를 포함한 중앙처리장치(CPU), 프로그램 영와과 데이터 영역으로 이루어진 메모리, 프로그램 3가지 요소로 구성되어 있다. CPU와 메모리가 분리되어 있고 둘을 연결하는 버스(Bus)를 통해 명령어 읽기, 데이터 읽고 쓰기가 가능하다. 이때 메모리 안에 프로그램과 데이터 영역의 물리적 구분이 없기에 CPU가 명령어와 데이터에 동시 접근할 수 없다.구조의 장점기존에 다른 작업을 수행하기 위해 하드웨어 전선을..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bBhC8W/btsHzcq9Pxn/1Dc7bTOasmsxEINkkRHma1/img.png)
크기가 N x N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓을 수 있는 방법의 수를 구하라(주어지는 N은 1 ≤ N 접근 방식 체스의 퀸은 상하좌우와 모든 대각선 방향으로 거리 제한없이 공격이 가능하다.따라서 퀸을 배치한 뒤, 해당 위치에 따라 배치할 수 없는 구역을 설정하고다음 행에 퀸을 배치하는 방식으로 모든 퀸을 공격할 수 없도록 배치하는모든 경우의 수를 구한다. 행마다 하나의 퀸만 배치함으로써 좌우에 겹치는 퀸이 없도록 설정퀸을 배치했을 때, 배치한 위치를 기준으로 같은 열에 퀸을 배치하지 못하도록 설정배치한 위치를 기준으로 양 대각 방향에 퀸을 배치하지 못하도록 설정(행 기준 위에서 아래 방향으로 퀸을 하나씩 배치하여 위쪽 행에는 배치 금지 구역을 설정하지 않음) 구현 코드def q..
백준 온라인 문제풀이 사이트에서 자바스크립트를 이용해서 알고리즘을 풀려고 했더니 자바스크립트 언어는 없고, node.js밖에 없어 사용법을 찾아보았다. 1. fs를 활용하여 입출력하기var fs = require('fs');var input = fs.readFileSync('/dev/stdin').toString().split(' ');var a = parseInt(input[0]);var b = parseInt(input[1]);console.log(a+b); 이 방식은 백준 언어 정보에 나와있는 방식으로, 노드의 파일 시스템에 접근할 수 있는 모듈을 사용하는 것이다. 모듈이기 때문에 require을 통해 fs를 불러온다파일을 읽는 함수는 readFile과 readFileSync가 존재하는데, read..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/c52C9B/btsGCX2MQNX/l82CrTGCH5YCfJmgdAwxt0/img.png)
이벤트(Event) 프로그래밍하는 시스템에서 일어나는 사건(action) 혹은 발생(occurrence) 애플리케이션이 특정 타입의 이벤트에 대해 반응하여 어떤 일을 하고 싶다면 해당하는 타입의 이벤트가 발생했을 때 호출된 함수를 브라우저에 알려 호출을 위임할 수 있음 이벤트 핸들러(Event Handler) : 이벤트가 발생했을 때 호출될 함수 이벤트 핸들러 등록 : 이벤트가 발생했을 때 브라우저에 이벤트 핸들러의 호출을 위임하는 것 이벤트 타입 이벤트 타입은 약 200여 가지가 존재 그 중 사용 빈도가 높은 이벤트로는 마우스 이벤트, 키보드 이벤트, 포커스 이벤트, 폼 이벤트(form event), 값 변경 이벤트, DOM 뮤테이션 이벤트, 뷰 이벤트, 리소스 이벤트가 존재 상세 목록은 MDN 사이트..
스코프(Scope) 참조 대상 식별자를 찾아내기 위한 규칙 모든 식별자는 자신이 선언된 위치에 의해 다른 코드가 식별자 자신을 참조할 수 있는 유효 범위를 결정 스코프는 전역 스코프(Global Scope)와 지역 스코프(Local Scope)로 나뉨 구분 설명 스코프 변수 전역 코드의 가장 바깥 영역 전역 스코프 전역 변수 지역 함수 몸체 내부 지역 스코프 지역 변수 변수는 자신이 선언된 위치에 의해 자신이 유효한 범위인 스코프가 결정 스코프 체인 스코프가 함수의 중첩에 의해 계층적으로 연결된 것을 의미 함수 몸체 내부에서 정의된 함수를 "중첩 함수(nested function)", 중첩 함수를 포함하는 함수를 "외부 함수(outer function)"이라 부름 변수를 참조할 때, 스코프 체인을 통해 ..
데이터 타입 자바스크립트의 데이터 타입은 원시 타입(Primary Type)과 참조 타입(Reference Type)으로 분류됨 1. 원시 타입(Primary Type) Object를 제외한 모든 데이터 타입은 언어 최하위 수준에서 직접 표현되는 불변값(immutable value, 값 변경 불가능) 변경 불가능한 값은 변수가 아닌 원시 값을 의미 원시 값을 변수에 할당하면 변수(확보된 메모리 공간)에는 실제 값이 저장됨 변수의 값을 재할당 시, 새로운 메모리 공간을 확보하고 재할당한 원시 값을 저장 후, 변수가 새롭게 재할당된 원시 값을 가리키도록 변경 원시 값을 갖는 변수를 다른 변수에 할당하면 원본의 원시 값이 복사되어 전달 Type 종류 : Null, Undefined, Boolean, Numbe..
변수 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름 식별자 변수를 구분할 수 있는 변수명 식별자는 문자, 달러($), 밑줄(_)로 시작해야하며 대소문자를 구분하고, 특수문자를 제외한 문자, 숫자, 밑줄(_), 달러($)를 포함할 수 있음 예약어(for, if ,function 등)는 사용이 불가능 네이밍 컨벤션 카멜 케이스(camelCase) exampleName 스네이크 케이스(snake_case) example_name 파스칼 케이스(PascalCase) ExampleName 헝가리언 케이스(typeHungarianCase) strExampleName(type + identifier) 변수 선언 자바스크립트에서의 선언은 3가지 종류가 있음 1. v..