분류 전체보기 43

코딩 테스트를 위해 꼭 알아야 할, Python 문법 정리

1. heapq binary tree 기반의 min heap 자료구조를 제공한다. import 방법 import heapq 특징 heap을 만들어주는 것이 아니라, list 내부의 값들을 min-heap의 성질대로 배치 해준다! 아래와 같이 먼저 heap으로 사용할 list를 만들어 주거나, 이미 만들어진 list를 힙의 성질대로 재배치할 수 있다. #새로 heap을 위한 리스트를 만들거나 heap = [] #또는 힙으로 사용할 기존에 사용하던 리스트가 있어야함 heap = [ 1, 2, 3, 4, 5 ] 힙 원소 추가 heapq.heappush( 리스트, 추가할 원소 ) heap = [] heapq.heappush(heap, 14) heapq.heappush(heap, 11) heapq.heappush..

알고리즘 2021.11.14

[JS] Lexical scope 와 closure 와 this

closure는 함수를 선언하는 과정에서 결정된다. 함수가 생성될 때, 함수와 렉시컬 환경을 기억해 놓는 것이다. 즉, 당시의 외부 변수를 기억하는 것. 여기서 렉시컬이라는 것은, 자바스크립트가 따르고 있는 스코프 모델이다. 자바스크립트는 렉시컬 스코프를 따르는데, 이는 함수가 호출될 때가 아니라 선언될 때, 상위 스코프를 결정하는 규칙이라고 보면 된다. 아래 예시를 보자. let num = 1; function a() { let num = 2; b(); } function b() { console.log(num); } a(); b(); 위 예시에서 결과값이 어떻게 나올까? 정답은 둘다 1이 나온다는 것이다. a(); // 1 b(); // 1 혹시 a() 의 경우 2가 나올 것이라 예측했을 수도 있다...

CS 스터디 2021.11.07

[JS] 객체 구조분해 할당 이름 바꾸기, 객체 spread syntax

const a = { name: "woong", age: 12, }; const { name: myName, age: myAge } = a; console.log(myName); // woong console.log(myAge); // 12 위 방식으로 객체 전개 구문에서 변수 이름을 바꿔줄 수 있다. const a = { name: "woong", age: 12, }; const b = Object.assign({}, a); const c = { ...a }; b.name = "hoon"; console.log(a.name); // woong (안바뀜) c.name = "june"; console.log(a.name); // woong (안바뀜) b 와 c 두 방식 모두 객체의 주소가 복사된 것이 아니..

CS 스터디 2021.11.07

[JS] let, const 와 var 의 차이

1. 적용되는 스코프가 다르다. var 는 "함수 스코프"로 작동한다. let, const 는 "블록 스코피"로 작동한다. var의 경우, 함수가 아닌 if, for, while, try/catch 문 안에서 선언된 변수를 중괄호 { } 밖에서도 사용 가능하다. if (true) { var a = 1; } console.log(a); //1이 정상적으로 출력된다. 그러나 let, const 의 경우 블록 스코프로 작동하기 때문에 함수 뿐만아니라 if, for, while, try/catch 문 내부에서 다른 스코프를 갖는다 (switch는 블록 스코프가 아님!) if (true) { let a = 1; } console.log(a); // a is not defined 오류 발생 2. var는 함수를 재..

CS 스터디 2021.11.07

[웅's HTTP 완벽가이드] 3장 (2편) - 상태 메시지와 헤더 총정리 (HTTP/1.1까지)

'HTTP 완벽 가이드' 책을 읽고 정리한 내용입니다. 1장 HTTP 기초 링크 : https://codeboyed.tistory.com/17 2장 URL과 리소스 링크 : https://codeboyed.tistory.com/19 3장(1편) HTTP 메시지 중 메소드 : https://codeboyed.tistory.com/23 3장은 HTTP 요청과 응답 시 사용되는 HTTP 메시지에 관한 내용입니다. 내용이 상대적으로 많아서 1편과 2편으로 구성했습니다. 개발자 도구의 네트워크 탭을 열어, HTTP 메시지에 어떤 요소가 있는 지 한 번 보는 것도 좋을 것 같습니다. 3.4 상태코드 HTTP 상태 코드는 크게 5가지로 나뉜다. 상태 코드는 클라이언트에게 그들의 트랜잭션을 이해할 수 있는 쉬운 방법을..

CS 스터디 2021.10.24

[웅's HTTP 완벽 가이드] 3장(1편) - HTTP 메시지 ( 메서드 총정리 )

'HTTP 완벽 가이드' 책을 읽고 정리한 내용입니다. 1장 HTTP 기초 링크 : https://codeboyed.tistory.com/17 2장 URL과 리소스 링크 : https://codeboyed.tistory.com/19 3장은 HTTP 요청과 응답 시 사용되는 HTTP 메시지에 관한 내용입니다. 내용이 상대적으로 많아서 1편과 2편으로 구성했습니다. 개발자 도구의 네트워크 탭을 열어, HTTP 메시지에 어떤 요소가 있는 지 한 번 보는 것도 좋을 것 같습니다. 3.1 메시지의 흐름 3.1.1 메시지는 원 서버 방향을 인바운드로 하여 송신된다. HTTP는 인바운드와 아웃바운드라는 용어를 사용한다. 이는 트랜잭션의 방향을 표현하기 위함이다. 원 서버로 향하는 것은 인바운드로 이동하는 것이고( 서..

CS 스터디 2021.10.17

리액트 useEffect hook 실행 순서

1. 두번째 인자로 아무 값도 없는 경우 useEffect(() => { .... }) 렌더링이 된 후 마다 실행된다. 2. 두번째 인자가 빈 배열 '[ ]' 인 경우 useEffect(() => { .... }, []) 첫 렌더링 후에만 실행되고, 두번째 렌더링부터는 아무리 렌더링이 많이 일어나도 실행되지 않는다. 3. 두번째 인자가 특정 변수의 배열인 경우 useEffect(() => { .... }, [state1, state2]) 첫 렌더링 후에 한 번 실행되고, state1 또는 state2 가 변할 때 마다 실행된다. 4. 렌더링 이후에 실행된다는 것은 무슨 말인가? import "./App.css"; import { useState, useEffect } from "react"; functi..

자주 사용하지만 까먹는 git 명령어

Git clone 후 특정 remote/branch local에 가져오기 origin branch 에는 존재하지만, 나의 local branch 에 가져와지지 않은 branch 가 있을 수 있다. 해당 브랜치를 내 로컬로 가져오고 싶을 때 다음과 같은 명령어 옵션을 이용한다. $ git checkout -t / ex) git checkout -t origin/woongs 특정 브랜치만 clone 해오기 원격 저장소에 여러 브랜치가 존재하는 경우, 사용할 특정 브랜치만 clone 하고 싶을 때가 있다. 이때, 다음과 같은 명령어를 사용한다. $ git clone -b (브랜치 이름) --single-branch (저장소 URL) ex) git clone -b woongs --single-branch htt..

[웅's HTTP 완벽 가이드] 2장 - URL과 리소스

'HTTP 완벽 가이드' 책을 읽고 정리한 내용입니다. 1장 HTTP 기초 링크 : https://codeboyed.tistory.com/17 2장에서는 인터넷의 리소스를 사용하기 위해 꼭 알아야 하는 URL 의 개념에 대해 다룹니다. 글을 읽기전 아래 URL에 대해서 자신이 아는 내용을 혼자 설명해보고 글을 읽는 것도 좋은 공부방법이 될 것 같습니다. https://codeboyed.tistory.com/manage/newpost/?type=post&returnURL=%2Fmanage%2F# URL(Uniform Resource Locator)은 인터넷의 리소스를 가리키는 표준이름이다. URL은 전자정보 일부를 가리키고 그것이 어디에 있고 어떻게 접근할 수 있는지 알려준다. 2.1 인터넷 리소스 탐색하..

CS 스터디 2021.10.03