2623번: 음악프로그램 첫째 줄에는 가수의 수 N과 보조 PD의 수 M이 주어진다. 가수는 번호 1, 2,…,N 으로 표시한다. 둘째 줄부터 각 보조 PD가 정한 순서들이 한 줄에 하나씩 나온다. 각 줄의 맨 앞에는 보조 PD가 담당한 www.acmicpc.net 위상 정렬 알고리즘을 사용하는 문제이다. 선수 과목을 고려한 학습 순서 결정과 같은 문제일 때, 위상 정렬 알고리즘으로 풀이할 수 있다. 위상 정렬을 모르시는 분들을 위해 아래를 참고해주세요! 위상 정렬 위상 정렬은 방향 그래프에서 간선으로 주어진 정점 간 선후 관계를 위배하지 않도록 나열하는 정렬을 말한다. 위상 정렬은 사이클이 존재하지 않는 방향 그래프에서만 정의된다. 선수 과목과 같이 가장 앞에 올 수 있는 노드를 먼저 생각해야 한다. ..
18428번: 감시 피하기 NxN 크기의 복도가 있다. 복도는 1x1 크기의 칸으로 나누어지며, 특정한 위치에는 선생님, 학생, 혹은 장애물이 위치할 수 있다. 현재 몇 명의 학생들은 수업시간에 몰래 복도로 빠져나왔는데, 복 www.acmicpc.net https://www.acmicpc.net/problem/14502 연구소 문제와 비슷하다. 백트래킹 문제이며, 장애물을 설치하는 데에는 DFS, 감시를 피할 수 있는지의 여부는 BFS로 풀이하였다. const fs = require('fs'); let [N, ...input] = fs.readFileSync('/dev/stdin').toString().trim().split('\n'); let board = input.map((v) => v.split(..
이전 글에서 이어지는 내용입니다. 프로토타입(Prototype) 이해하기 1 프로토타입을 이해하기 위해서는 ES6 클래스 개념이 등장하기 이전, 클래스라는 개념 없이 객체를 생성할 수 있었던 생성자 함수의 이해가 필요하다. 생성자 함수(Constructor functions) 다른 언어의 dmswl98-dev.tistory.com 이전 글의 핵심은 '인스턴스는 생성자 함수의 프로토타입과 연결됨'이었다. 과연 인스턴스는 생성자 함수의 프로토타입과 어떻게 연결될까? 이는 프로토타입 상속과 프로토타입 체인에 의해 설명된다. 아래 글을 모두 읽은 뒤 다시 보길 바란다. 프로토타입 상속(Prototypal inheritance) 이전 글의 코드를 다시 살펴보자. const Animal = function(spec..
프로토타입을 이해하기 위해서는 ES6 클래스 개념이 등장하기 이전, 클래스라는 개념 없이 객체를 생성할 수 있었던 생성자 함수의 이해가 필요하다. 생성자 함수(Constructor functions) 다른 언어의 클래스 개념을 생성자 함수를 통해 구현할 수 있으며 생성자 함수는 다음 조건을 충족해야 한다. 항상 함수명의 첫 글자는 대문자여야 한다. 화살표 함수가 아닌 선언문 함수나 표현문 함수로 작성되어야 한다. 화살표 함수는 자신만의 this를 가지지 않기 때문이다. new 연산자로 생성자 함수를 호출해야 한다. prototype을 이해하기 위해서는 this라는 개념이 필요하다. this를 복습하고 읽는 것을 추천드린다. 'use strict'; const Animal = function(species..