본문 바로가기

분류 전체보기

(12)
[Javascript] 백준 1260번 DFS와 BFS - node.js 이 글은 백준 1260번 DFS와 BFS를 풀이한다. Javascript를 이용해 알고리즘을 구현했다. 문제 그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램을 작성하시오. 단, 방문할 수 있는 정점이 여러 개인 경우에는 정점 번호가 작은 것을 먼저 방문하고, 더 이상 방문할 수 있는 점이 없는 경우 종료한다. 정점 번호는 1번부터 N번까지이다. 입력 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사이에 여러 개의 간선이 있을 수 있다. 입력으로 주어지는 간선은 양방향이다. 예제 입력 1 4 5 1 1 2 ..
[Algorithm] 깊이 우선 탐색(DFS)과 너비 우선 탐색(BFS) - 그래프 탐색 알고리즘 이 글은 그래프 탐색 알고리즘의 대표적인 알고리즘, 깊이 우선 탐색(DFS) 알고리즘과 너비 우선 탐색(BFS) 알고리즘을 소개한다. 그래프의 모든 정점들을 특정한 순서에 따라 방문하는 알고리즘들을 그래프의 탐색 알고리즘이라고 한다. 탐색 알고리즘 중 가장 널리 사용되는 두 가지는 깊이 우선 탐색(DFS)과 너비 우선 탐색(BFS)이다. 깊이 우선 탐색(DFS: Depth First Search) 깊이 우선 탐색은 현재 정점과 인접한 정점들을 하나씩 검사하다가, 아직 방문하지 않은 정점으로 향하는 간선이 있다면 그 간선을 따라간다. 이 과정에서 더이상 갈 곳이 없는 막힌 정점에 도달하면 마지막에 따라왔던 간선을 따라 뒤로 돌아간다. 이는 재귀 호출을 이용하면 간단하게 구현할 수 있다. 너비 우선 탐색(B..
[Javascript] 배열 선언, 초기화의 모든 것 (Hacks for Creating Javascript Arrays) 이 글은 자바스크립트로 배열을 선언하는 방법들에 대해 설명한다. 배열 리터럴([]) 일반적으로 배열 리터럴을 이용해 배열을 생성한다. 그러나 동적으로 배열을 생성하기에 최적의 방법은 아니다. const array1 = [1, 2, 3]; 배열 생성자(Array()) 배열 생성자(Array())를 이용한 선언이 배열 리터럴의 대안이 된다. 아래 코드는 배열 생성자의 쓰임새를 보여준다. // 매개변수(parameter)가 하나 이상일 때 // 인자(argument)를 요소로 가지는 새 배열을 생성한다. // 배열의 길이는 인자의 개수로 설정된다. const array1 = new Array(1, 2, 3); console.log(array1); // [1, 2, 3] console.log(array1.len..
[React, React Native] 논리 연산자 AND(&&)로 조건부 렌더링할 때의 주의사항 이 글은 React, React Native에서 논리 연산자로 조건부 렌더링할 때의 주의사항에 대해 설명한다. JSX 안에는 중괄호를 이용해 표현식을 포함할 수 있다. 그 안에 javascript 논리 연산자 &&를 사용하면 쉽고 간결하게 엘리먼트를 조건부로 렌더링할 수 있다. && 연산자는 왼쪽 피연산자가 true로 간주되면 오른쪽 피연산자를, false로 간주되면 해당 리터럴을 반환한다. 다시 말해서 a&&b의 결과는 a가 true로 간주된다면 a, false로 간주된다면 b이다. 컴포넌트나 엘리먼트를 논리 연산자 &&를 이용해 조건부 렌더링하면, 왼쪽의 피연산자가 true로 간주되는 값일 때 오른쪽의 컴포넌트나 엘리먼트가 렌더링된다. 그러나 컴포넌트 조건부 렌더링 시 왼쪽의 피연산자가 false일 ..