목록분류 전체보기 (159)
개발자공부일기
[알고리즘] 시간 복잡도와 Big O 표기법 Big O 표기법 알고리즘의 효율에서 가장 중요한 부분은 ‘n이 커질 때 알고리즘의 단계가 얼마만큼 증가하는가’이고, 이것을 잘 나타내는 빅 O 표기법을 사용합니다. 빅 O 표기법은 점근 표기법(Asymptotic Notation) 중 하나인데, 점근 표기법이란 ‘점근(漸近): 차츰 점, 가까울 근’이라는 이름에서 알 수 있듯이 알고리즘의 수행 시간을 대략적으로 나타내는 방법을 말합니다. 여기서 말한 ‘대략적으로’는 ‘정확하게’의 반대말이 아니라 ‘자세하게’의 반대말입니다. 소규모 데이터를 다루는 경우 우수한 성능의 알고리즘과 그렇지 않은 알고리즘 사이에 차이가 거의 없습니다. 퀵 정렬이 훨씬 우수한 성능을 갖고 있지만, 오히려 소규모 데이터를 정렬할 때에는 ..
얕은 복사는 객체의 참조값(주소 값)을 복사하고, 깊은 복사는 객체의 실제 값을 복사합니다. 우리는 먼저 원시값과 참조값을 알아야 한다.원시값(Primitive Type): String, Number, Boolean, Null, Undefined, Symbol참조값(Reference Type): Array, Object, Function원시 값(Primitive Type)원시 값은 단순한 데이터이며, 모든 원시 값은 변경이 불가능하다. 원시 값을 변수에 할당하면 변수에 실제 값이 저장된다. 우리가let a=10;이라고 a에 할당을 하면 메모리주소 1000에 10을 할당하고 주소를 저장한다.그리고a= 20;이라고 재할당을 하면 1000주소에 10이 20으로 바뀌는게 아닌 1100주소에 20을 새로 할당하..
async/await를 쓰는 이유자바스크립트에는 비동기 처리 방식이 3가지가 있는데 콜백 함수와 이를 개선한 Promise객체 그리고 async/await가 있다.콜백 함수를 사용하면 Callback Hell에 빠지기 쉽고 이를 개선한 Promise도 무분별한 then의 사용으로 Promise Hell에 빠지는 상황이 생긴다. Callback Hell step1(function (value1) { step2(function (value2) { step3(function (value3) { step4(function (value4) { step5(function (value5) { step6(functio..
Promise 객체는 비동기 작업이 맞이할 미래의 완료 또는 실패와 그 결과 값을 나타냅니다.설명Promise 는 프로미스가 생성된 시점에는 알려지지 않았을 수도 있는 값을 위한 대리자로, 비동기 연산이 종료된 이후에 결과 값과 실패 사유를 처리하기 위한 처리기를 연결할 수 있습니다. 프로미스를 사용하면 비동기 메서드에서 마치 동기 메서드처럼 값을 반환할 수 있습니다. 다만 최종 결과를 반환하는 것이 아니고, 미래의 어떤 시점에 결과를 제공하겠다는 '프로미스(promise)'를 반환합니다. Promise는 다음 중 하나의 상태를 가집니다.대기(pending): 이행하지도, 거부하지도 않은 초기 상태.이행(fulfilled): 연산이 성공적으로 완료됨.거부(rejected): 연산이 실패함.대기 중인 프로..
VarES6의 등장 이전에는 문제점들이 있음에도 불구하고 var로 변수를 선언하는 것이 지배적이었는데요. 따라서 새로운 변수 선언 방식이 등장할 수밖에 없었습니다. 우선, 문제점에 대해 논의하기 전에 var 자체에 대해 더 이해해봅시다.Scope of var범위는 기본적으로 변수를 사용할 수 있는 위치를 의미합니다. var 선언은 전역 범위 혹은 함수 범위로 지정됩니다.var변수가 함수 외부에서 선언될 때의 범위는 전역입니다. 즉, 함수 블록 외부에서 var를 사용하여 선언된 모든 변수를 전체 윈도우 상에서 사용할 수 있는 것이죠.var가 함수 내에서 선언될 때는 함수 범위로 지정됩니다. 즉, 해당 함수 내에서만 사용하고 접근할 수 있습니다.자세한 이해를 돕기위해 아래의 예제를 살펴봅시다. var ..
비트(bit)란 컴퓨터가 데이터를 처리하기 위해 사용하는 데이터의 최소 단위이다.바이트(byte)는 한 문자를 표한할 수 있는 최소 단위로 8비트로 구성되어있다. (1Byte = 1Bit) 컴퓨터는 데이터를 바이트 단위로 저장하고연속되는 바이트를 저장하는 순서가 바로 바이트 배열 순서(Byte Order)이다. 데이터는 낮은 주소에서 높은 주소 차례로 저장되지만이 데이터가 저장되는 순서에 따라 빅 엔디안과 리틀 엔디안이 나뉜다.빅 엔디안 Big-Endian 여러 개의 연속된 데이터를 1차원의 기억장치 최상위 공간(MSB)부터 차례로 배열하는 기법 으로 평소 사람이 숫자를 사용하는 방식과 같은 방식이다. 큰 자리 수부터 저장하기 때문에 숫자 비교에 유리하고 저장된 순서 그래도 읽을 수 있어 이해가 용이하다..
https://school.programmers.co.kr/learn/courses/30/lessons/92335?language=javascript 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 설명은 다음과 같다양의 정수 n이 주어집니다. 이 숫자를 k진수로 바꿨을 때, 변환된 수 안에 아래 조건에 맞는 소수(Prime number)가 몇 개인지 알아보려 합니다.0P0처럼 소수 양쪽에 0이 있는 경우P0처럼 소수 오른쪽에만 0이 있고 왼쪽에는 아무것도 없는 경우0P처럼 소수 왼쪽에만 0이 있고 오른쪽에는 아무것도 없는 경우P처럼 소수 양쪽에 아무것도 없는 경우단, P는 각 자릿수에 0을 포함하..
프로세스와 스레드에 대한 정의▪프로세스: 운영체제로부터 자원을 할당받은 작업의 단위.▪스레드: 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위.프로그램이 프로세스가 되려면먼저 프로세스와 스레드에 대해 본격적으로 설명하기 전에 프로그램에 대해서 설명하고 가야 한다. 프로그램이라는 단어의 정의는 다음과 같다.프로그램이란, 파일이 저장 장치에 저장되어 있지만 메모리에는 올라가 있지 않은 정적인 상태 를 말한다.메모리에 올라가 있지 않은: 아직 운영체제가 프로그램에게 독립적인 메모리 공간을 할당해주지 않았다는 뜻이다. 모든 프로그램은 운영체제가 실행되기 위한 메모리 공간을 할당해 줘야 실행될 수 있다.정적인 상태: 정적(靜的)이라는 단어 그대로, 움직이지 않는 상태라는 뜻이다. 한 마디로 아직 실행되지 않..