본문 바로가기

전체 글

(12)
개인정보 보호 방침 1. 개인정보의 처리 목적 (‘https://lihess.tistory.com/’이하 ‘lihess’) 은(는) 다음의 목적을 위하여 개인정보를 처리하고 있으며, 다음의 목적 이외의 용도로는 이용하지 않습니다. - 고객 가입의사 확인, 고객에 대한 서비스 제공에 따른 본인 식별.인증, 회원자격 유지.관리, 물품 또는 서비스 공급에 따른 금액 결제, 물품 또는 서비스의 공급.배송 등 2. 개인정보의 처리 및 보유 기간 ① (‘https://lihess.tistory.com/’이하 ‘lihess’) 은(는) 정보주체로부터 개인정보를 수집할 때 동의 받은 개인정보 보유․이용기간 또는 법령에 따른 개인정보 보유․이용기간 내에서 개인정보를 처리․보유합니다. ② 구체적인 개인정보 처리 및 보유 기간은 다음과 같습니..
logo
[Algorithm] 너비 우선 탐색(BFS, Breadth-First Search) 그래프 탐색이란, 하나의 정점으로부터 시작하여 차례대로 모든 정점들을 단 한번씩 방문하는 것을 의미한다. 그래프 탐색에는 너비 우선 탐색(BFS), 깊이 우선 탐색(DFS) 두 가지의 방법이 있는 데, 그 중에서 너비 우선 탐색에 대해 알아보고자 한다. 너비 우선 탐색(BFS, Breadth-First Search) 너비 우선 탐색이란, 인접한 노드들을 차례대로 방문하는 그래프 탐색 방법이다. 위 그림은 너비 우선 탐색과 깊이 우선 탐색에 대한 그림이다. 그림과 같이 너비 우선 탐색 트리는 높이가 작은 노드부터 차례대로 탐색하고 더 높은 높이를 탐색한다면, 깊이 우선 탐색은 자신보다 높은 높이의 노드를 탐색한다. 너비 우선 탐색은 큐(Queue) 자료구조를 사용한다. 큐를 이용하여 너비 우선 탐색을 구현..
[JavaScript] var과 let, const var var은 ES6 이전의 변수 선언 방식으로, 함수단위의 스코프를 가지므로 매우 유연한 방식으로 변수를 선언할 수 있다. var a = 'a' function outter(){ console.log(a) var a = 'b' function inner(){ console.log(a) } inner() console.log(a) } outter() consol.log(a) 위와 같은 코드에서, var 변수 a의 값은 아래와 같이 출력된다. undefined b b a 자바스크립트는 변수의 선언을 위로 끌어올리는 호이스팅 특성을 가지기 때문에, 처음 출력문에서 a는 값이 정의되지 않는 상태가 된다. 또한 마지막 출력문에서 outter 함수에서 지정된 a의 값 b는 유효하지 않게 된다. 때문..
[백준] 1781 컵라면 1781 컵라면 : https://www.acmicpc.net/problem/1781 1781번: 컵라면 상욱 조교는 동호에게 N개의 문제를 주고서, 각각의 문제를 풀었을 때 컵라면을 몇 개 줄 것인지 제시 하였다. 하지만 동호의 찌를듯한 자신감에 소심한 상욱 조교는 각각의 문제에 대해 데드라인을 정하였다. 문제 번호 1 2 3 4 5 6 7 데드라인 1 1 3 3 2 2 6 컵라면 수 6 7 2 1 4 5 1 위와 같은 상황에서 동호가 2, 6, 3, 1, 7, 5, 4 순으로 숙제를 한다면 2, 6, 3, 7번 문제를 시간 내에 풀어 총 15개의 컵라면을 www.acmicpc.net 문제 당 마감시간과 보상이 주어지고, 이때 보상이 최대 수를 구하는 문제 접근 주어진 마감 시간 내에 최대 보상을 얻어..
[JavaScript] 콜백함수(Callback Function)와 비동기 처리 콜백 함수(Callback Function) 콜백 함수란, 특정 함수에게 자신의 제어권을 넘겨준 함수로써 제어권을 받은 함수가 콜백 함수의 처리 시기, 처리 방법등을 정의한다. 콜백 함수는 사용자가 함수를 실행하는 것이 아닌, 다른 함수가 함수를 실행한다는 점에 특징적이다. 콜백 함수에 대해 이해하기 위해 콜백함수를 인자로 가지는 setTnterval() 함수를 살펴보자. setInterval(function(){ console.log('1초마다 실행될 겁니다.') }, 1000) setInterval 함수는 주기함수로, 인자로 콜백함수와 주기를 가진다. 이때, 주어진 주기마다 콜백함수를 실행시키는 기능을 한다. 위의 코드에서 '1초마다 실행될 겁니다.'라는 문장은 주어진 주기인 1초마다 출력되게 될 것..
[Algorithm] 탐욕 알고리즘(Greedy Alogrithm) 탐욕 알고리즘이란? 최적해 문제에서 사용되는 알고리즘으로, 매순간 가장 최적으로 여겨지는 선택을 해나가며 최종적으로 최적의 해를 구하는 알고리즘이다. 동적 프로그래밍의 수행 시간문제를 보완하기 위해 고안된 알고리즘이다. 현재 동적 프로그래밍과 서로 보완해나가며 같이 사용되고 있다. 매 순간 최적을 고른다고 해서 이 것이 항상 최적인 해를 얻는다는 보장이 없으므로, 최적인 해답을 얻는지 확인하는 절차가 반드시 필요하다. 또한 모든 문제에서 탐욕 알고리즘이 적용가능한 것은 아니다. 허프만 코드(Huffman Code) 탐욕 알고리즘의 대표적인 예로는 허프만 코드가 있다. 허프만 코드는 데이터 압축 방법으로, 문자의 출현 빈도수에 따라 서로 다른 길이의 코드를 부여한다. 일반적으로 빈도수가 높은 문자가 짧은 ..
[JavaScript] 스코프와 실행 컨텍스트 Scope(스코프) 스코프란? 변수의 유효범위로 함수가 정의될때 생성된다. var a = 1 function outer(){ console.log(a); function inner(){ console.log(a); var a = 3; } inner(); console.log(a); } outer(a); console.log(a); 위의 함수를 예시로 스코프에 대해 알아보자! 아래는 각 코드 라인별로의 스코프가 변화하는 모습이다. line 0 : 전역 line 2 : 함수 outer이 선언되었으므로, outer로 변경 line 3 : 함수 inner이 선언되었으므로, inner로 변경 이때 프로그램이 실행되면서 변수의 값을 찾아야 할 경우, 스코프를 거슬러 올라가며 변수의 값을 찾아간다. Execution..