원시 타입과 객체 타입 원시 타입: 변경 불가능한 값(immutable value) 객체 타입: 변경 가능한 값(mutable value) 즉, 객체는 새로운 값을 다시 만들 필요없이 직접 변경이 가능하다는 것이다. 원시 타입 (primitive data type) number string boolean undefined null symbol (ES6에서 추가) 객체 타입 (object/reference type) object number (숫자 타입) 자바스크립트는 다른 프로그래밍 언어와 달리 하나의 숫자 타입만 존재한다. 정수, 실수, 2진수, 8진수, 16진수 리터럴은 모두 메모리에 64비트 부동소수점 형식의 2진수로 저장된다. 자바스크립트는 2진수, 8진수, 16진수를 표현하는 데이터 타입을 제공..
값 식(표현식)이 평가되어 생성된 결과 평가: 식을 해석해서 값을 생성하거나 참조하는 것 모든 값은 데이터 타입을 가지며 메모리에 2진수(비트)의 나열로 저장된다. 따라서 메모리에 저장된 값은 데이터 타입에 따라 다르게 해석될 수 있다. 리터럴 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법 값은 다양한 방법으로 생성할 수 있다. 가장 기본적인 방법은 리터럴을 사용하는 것이다. 자바스크립트 엔진은 코드가 실행되는 시점인 런타임에 리터럴을 평가해 값을 생성한다. // 숫자 리터럴 10.50 1001 // 정수 리터럴 0b01000001 // 2진수 리터럴 0o101 // 8진수 리터럴 0x41 // 16진수 리터럴 // 문자열 리터럴 'Hello' "World" // 불리언 리..
문제 링크 Search a 2D Matrix - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제 유형 2차원 배열 문제 풀이 이 문제는 정렬된 2차원 m x n 배열내에 target이 있으면 true, 없으면 false를 반환하는 문제이다. 정렬된 1차원 배열을 먼저 생각해보자. 정렬된 1차원 배열에서 어떤 값을 탐색할 때 이진 탐색을 이용하면 O(log n)의 시간복잡도로 문제 해결이 가능하다. 문제에서 주어지는 2차원 매트릭스는 각 행, 열의 숫자들이 모..
문제 링크 Rotate Image - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제 유형 2차원 배열 문제 풀이 이 문제는 이미지를 나타내는 2차원 행렬이 2차원 배열로 주어지고, 이를 시계방향으로 90도 돌렸을 때의 배열을 반환하는 문제이다. 처음 n x n 행렬의 인덱스를 oldX, oldY라 하고 90도 돌린 행렬의 인덱스를 newX, newY라고 할 때, 인덱스 간의 관계는 다음과 같다. newX = -oldY + (n - 1) newY = oldX..
변수(Variable) 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름 var result = 10 + 20; // result: 변수 이름, 변수값: 10 + 20이 계산된 결과인 30 변수는 메모리 셀에 저장된 값의 위치를 가리키는 상징적인 이름이다. 변수는 프로그래밍 언어의 컴파일러 또는 인터프리터에 의해 값이 저장된 메모리 공간의 주소로 치환되어 실행된다. 할당(Assignment) : 변수에 값을 저장하는 것 참조(Reference): 변수에 저장된 값을 읽어 들이는 것 변수 이름: 사람이 이해할 수 있는 언어로 값이 저장된 메모리 공간에 붙인 상징적인 이름 변수 이름을 사용해 참조를 요청하면 자바스크립트 엔진은 변수 이름과 매핑된 메모리 주소..
프로그래밍과 컴퓨팅 사고 프로그래밍 요구사항을 정확하게 이해한 후 코드로 적절한 문제 해결 방안을 정의하는 것 컴퓨팅 사고 컴퓨터와 사람은 사고, 인지의 방식이 다르다. 따라서, 컴퓨터의 관점에서 문제를 사고해야 한다. 해결 과제를 작은 단위로 분해하고 패턴화해서 추출하며, 프로그래밍 내에서 사용될 모든 개념은 평가 가능하도록 정의해야 한다. 예를 들어, '듣다'라는 행위는 사람에게는 당연한 하나의 기능이다. 또한, 소리가 '크다'/'작다'라는 표현은 상대적인 개념으로 기준이 불명확하다. 따라서, 컴퓨터에게는 "현재 볼륨보다 1단계 크게 조정하라", "볼륨을 60으로 조정하라"와 같이 양적 개념인 숫자를 사용해 명령해야 한다. 프로그래밍 언어 프로그래밍 언어를 통해 컴퓨터에게 명령을 전달하고, 컴퓨터는 ..
문제 링크 Find the Duplicate Number - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제 유형 배열 문제 풀이 이 문제는 배열 내 중복되는 숫자를 찾아 리턴하는 문제이다. 이 문제는 배열 내의 요소를 인덱스로 보는 방법을 통해 O(n)의 시간복잡도를 갖지만 공간복잡도가 다른 두 방법으로 접근할 수 있다. 새로운 배열에 숫자 존재 여부를 표시하기 nums 배열의 길이의 배열을 만들고, 배열을 순차적으로 접근한다. 현재 숫자에 해당하는 인덱스..
문제 링크 Shortest Unsorted Continuous Subarray - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제 유형 투 포인터, 정렬 문제 풀이 이 문제는 배열 내 모든 원소가 오름차순 정렬이 되도록 정렬되지 않은 subarray를 정렬할 때의 최소 subarray의 길이를 구하는 문제이다. 해당 문제는 두가지 방법으로 접근 가능하다. 정렬 후 비교하기 1. 입력으로 주어진 배열을 정렬해 새로운 배열에 복사한다. 2. 브루트 포스 방법으로..