반응형

IT 125

프로그래머스) 숫자 문자열과 영단어

https://programmers.co.kr/learn/courses/30/lessons/81301?language=javascript 코딩테스트 연습 - 숫자 문자열과 영단어 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자 programmers.co.kr 나의 풀이 정규 표현식을 사용하여 0부터 9까지 replace 함수를 메소드 체이닝 하였다. 그리고 parseInt로 감싸서 숫자로 반환하였다. function solution(s) { return parseInt(s.replace(/zero/g, "0") .replace(/one/g, "1") .replace(/t..

IT/Algorithm 2021.10.01

Space Complexity - 공간 복잡도

두 가지 요소 - 보조 공간과 입력 공간 보조 공간 : 알고리즘이 실행을 위해 사용하는 임시 공간 입력 공간 : 입력의 크기를 고려하여 실행 시 필요한 공간 공간 복잡성을 평가하기 위해 보조 공간만 사용되는 시나리오가 있지만 이 글에서는 전체 공간(보조 및 입력)을 사용할 것이다. 공간 복잡도는 메모리 또는 데이터 저장의 사용을 평가하기 위해 고려하는 사항이다. 알고리즘은 몇 가지 작업을 수행하기 위해 메모리를 사용해야 한다. 프로그램 명령어 저장 (컴파일러 => 런타임) 실행 (예: 함수 호출, 점프 문) 데이터 저장(예: 상수 및 변수 값) 여기서 저장된 변수 데이터는 주요 고려 사항이다. 시간 복잡도와 마찬가지로 공간 복잡도는 일반적으로 빅오 표기법으로 표시된다. 예시 1) function add(..

IT/Algorithm 2021.10.01

Big - O Notation) 빅오 표기법과 시간 복잡도

빅오는 알고리즘이 얼마나 빠르게 실행될지를 비교할 때 사용된다. 시간 복잡도(Time complexity)를 통해서 알고리즘의 빠르기를 비교할 수 있다. 빅오( O ), 세타( Θ ), 오메가( Ω ) 시간 복잡도를 표기할 때에는 빅오만 표기하지 않는다. 최악, 평균, 최상의 경우에 따라서 빅오, 빅 세타, 빅 오메가를 표기한다. O(n): 최악의 경우 Θ(n): 평균의 경우 Ω(n): 최상의 경우 하지만 알고리즘을 평가할 때 보통 최악의 경우를 본다고 한다. 왜일까? 왜냐하면 최상의 경우는 유용한 정보가 아니기 때문이라고 한다. 사실상 대부분의 알고리즘에 특별한 입력 값을 이용하면 O(1)을 달성할 수 있을 것이다. 즉 최악의 상황에서도 이 정도의 성능은 보장할 수 있다는 것을 알려주는 것이 더 유용하..

IT/Algorithm 2021.09.29

기본 매개변수 (Default Parameters)

기본 매개변수를 사용하면 주어진 값이 없거나 undefined가 전달될 경우, 매개 변수를 기본값으로 초기화할 수 있다. 함수 내부에서 parameter를 변형하거나 활용하는 경우, 예상치 못한 에러가 발생할 가능성이 있다. Uncaught TypeError: Cannot read property ? of undefined 함수 내부적으로 Validation(유효성) 체크 로직이 없는 경우, parameter에 대한 필수값 여부를 설정하는 것이 없고, 기본값을 할당하고 있지 않기 때문에 발생하는 것이다. 기본 매개변수는 빈 값이나 undefined인 경우에 적용되며, 무조건 falsy한 값이 들어간다고 적용되는 것이 아님을 유의해야 한다. 이런 기본 매개변수에도 한계는 존재한다. 기본적으로 매개변수에 대..

IT/JS 2021.09.12

fetch API와 then 메서드

fetch API는 비동기 방식으로, 서버에 요청을 하면 응답을 받는 API이다. fetch().then() function callback() { console.log('response end'); } fetch('html').then(callback); console.log(1); console.log(2); 위 예제 코드를 보면 fetch를 통해 html 데이터를 요청하고, 요청에 대한 응답이 완료되었을 때 then 메서드를 통해 callback을 실행하고 있다. 위 과정이 진행되는 동안 아래의 1, 2 콘솔 출력이 진행되며 결과는 아래와 같다. 1 2 response end fetch API - response 객체 fetch API 가이드에 따르면 then에 삽입된 함수를 실행시킬 때, 함수의 ..

IT/JS 2021.09.09

클로저

클로저는 세 가지 스코프 체인을 가진다. 클로저 자신에 대한 접근 - 자신의 블록 내에 정의된 변수 외부 함수의 변수에 대한 접근 - 클로저 자신이 선언된 블록을 의미한다. 전역 변수에 대한 접근 내부 함수는 외부 함수의 변수뿐만 아니라 매개 변수에도 접근할 수 있다. 다만 외부 함수의 arguments 객체에는 접근할 수 없는데, 모든 함수에는 arguments가 자동으로 선언이 되기 때문이다. 클로저 함수 또한 자신만의 arguments가 존재하기 때문에 외부 함수의 arguments를 다른 변수에 저장하지 않는 한, 클로저는 외부 함수의 arguments에 접근할 수 없다. 클로저는 외부 함수의 변수에 대한 참조를 저장한다. 이는 클로저가 실제 값에 접근하는 것이 아닌 값의 참조에 접근한다는 것을 ..

IT/JS 2021.09.07

Recursion

재귀(Recursion) 프로그래밍에서 재귀란 자신을 정의할 때 자기 자신을 재참조하는 것을 말한다. 따라서 재귀 함수란 함수가 호출되어 실행할 때, 함수 내부에서 자기 자신을 다시 호출하는 재귀 호출의 형태를 말한다. 스택(Stack) 재귀 호출을 이해하기 위해서는 스택이라는 자료 구조를 먼저 살펴보는 것이 좋다. 왜냐면 우리의 컴퓨터는 호출 스택이라고 불리는 스택을 사용하여 함수를 실행하기 때문이다. 호출 스택은 일반적인 프로그래밍에서도 중요하지만 재귀를 사용할 때 더욱 중요하다. 매일 해야 할 일을 포스트잇에 한 장에 하나씩 적는다고 생각해보자. 그리고 포스트잇은 한 곳에 겹쳐 붙여야 한다. 가장 위에 붙어있는 포스트잇에 적혀있는 일부터 해결할 수 있다. 즉, 가장 밑에 있는 일을 하기 위해서는 그..

IT/JS 2021.08.30

콜백 함수

callback -> '되돌아 호출해달라'라는 의미 어떤 함수 A를 호출하면서 '특정 조건일 때 함수 B를 실행해서 나에게 알려달라'는 요청을 함께 보내는 것이다. 이 요청을 받은 함수 A는 해당 조건이 갖춰졌는지 여부를 스스로 판단하고 B를 직접 호출한다. 이처럼 콜백 함수를 다른 코드(함수 또는 메서드)에게 인자로 넘겨줌으로써 그 제어권도 함께 위임한 함수이다. 콜백 함수를 위임받은 코드는 자체적인 내부 로직에 의해 이 콜백 함수를 적절한 시점에 실행할 것이다. 예시로 비동기 처리 함수인 setInterval과 setTimeout는 콜백 함수를 넘겨받아 설정한 시간 간격마다 콜백 함수를 호출한다.

IT/JS 2021.08.30

프로토타입 이해한 내용 정리

명확한 설명이 있는 좋은 글을 읽게 되어서 이해한 대로 쭉 적어보았다. 프로토타입을 제대로 이해하려면 4가지 포인트가 있다. 첫 번째, 모든 객체는 생성자 함수를 통해 만들어진다. 두 번째, 생성자 함수가 정의될 때는 두 가지의 일이 발생한다. 세 번째, Prototype Object을 이해한다. 네 번째, __proto__, Prototype Chain을 이해한다. 객체 지향 언어에서 Class는 빠지지 않는 개념이다. 클래스는 상속 기능이 있는데, 자바스크립트는 객체 지향 언어이지만 Class에 대한 개념은 없다. 때문에 상속 기능을 흉내내기 위해 존재하는 것이 바로 Prototype이다. ES6에서 Class 문법이 추가되긴 했지만, 그렇다고 자바스크립트가 Class 기반 언어가 된 것은 아니다. ..

IT/JS 2021.08.25

자바스크립트의 상속

다음과 같은 생성자 함수가 있다고 해보자. function Person(first, last, age, gender, interests) { this.name = { first, last }; this.age = age; this.gender = gender; this.interests = interests; }; Person.prototype.greeting = function() { alert('Hi! I\'m ' + this.name.first + '.'); }; 그리고 Teacher라는 생성자 함수를 정의해보자. function Teacher(first, last, age, gender, interests, subject) { Person.call(this, first, last, age, gen..

IT/JS 2021.08.25
반응형