[백준 1054] 특정한 최단 경로 - c++ 최단 경로 알고리즘 구현
·
알고리즘
문제 개요문제 번호: 1054제목: 특정한 최단 경로난이도: 골드 4링크: 백준 1504번문제 설명무방향 그래프가 주어진다.정점 1에서 정점 v1과 정점 v2를 통과해 정점 N으로 최단거리로 이동했을때의 거리 값을 구해야한다.지났던 정점과 간선은 다시 지나갈 수 있다.정점의 갯수 N(1 정점 a에서 정점 b의 거리의 길이 c (1 반드시 거쳐야하는 정점 v1 (v1 != N), v2 (v2 != 1) (v1 != v2)하나의 정점과 또다른 하나의 정점 사이 간선은 하나만 존재한다.접근 방법정점 1에서 정점 V1과 V2중 가장 짧은 거리인 곳으로 이동 후 해당 정점에서 시작해 선택되지 않은 정점V(1~2)로 이동하고 나서 정점 N으로 이동하는 방식을 생각했다.이때 최단거리 알고리즘인 다익스타 알고리즘을 사..
[Node.js 교과서] 섹션 3 - 노드의 기본 기능 익히기
·
Node.js
REPL 사용하기REPL(Read Eval Print Loop)이란 노드의 콘솔을 말한다. 자바스크립트는 스크립트 언어이므로 미리 컴파일하지 않아도 콘솔에서 코드를 실행할 수 있다.노드의 REPL입력한 코드를 읽고(Read), 해석하고(Eval), 결과물을 반환하고(Print), 종료할 때까지 반복한다.(Loop)JS 파일 실행하기노드에서 자바스크립트 코드를 실행할때 REPL에 직접 코드를 입력하는 대신 자바스스크립트 파일을 만들어 실행할 수 있다.콘솔에서 REPL로 들어가는 명령어는 node이고 노드를 통해 파일을 실행하는 명령어는 node [자바스크립트 파일 경로]이다.모듈로 만들기모듈이란 특정한 기능을 하는 함수나 변수들의 집합을 말한다.모듈로 만들어두면 여러 프로그램에 해당 모듈을 재사용할 수 있..
[백준 13418] 학교 탐방하기 - c++로 구현한 최소 스패닝 트리
·
알고리즘
문제 개요문제 번호: 13418제목: 학교 탐방하기난이도: 골드 3링크: 백준 13418번문제 설명학교안에 있는 모든 건물에 대한 이동 경로를 짜는 코드를 작성해야한다.최소한의 길을 선택해 모든 건물을 방문해야한다.길의 종류: 오르막길과 ( 0 ) 내리막길 ( 1 )입구 번호는 0번오르막길을 K번 오르면 피로도는 K^2피로도 계산은 최초 계산될 때 한번만 반영건물의 갯수: N (1 도로의 갯수: M (1 A 건물에서 B 건물까지 C (0은 오르막길 1은 내리막길)최악의 경로를 이용했을때 피로도와 최적의 경로를 이용했을때 피로도의 차이를 구해라접근 방법모든 건물을 방문하는 경로를 이어야하기 때문에 최소 스패닝 트리를 이용한다.간단하게 Union-Find를 이용한 크루스칼 알고리즘을 사용했다.이때 가중치는 ..
[백준 1647] 도시 분할 계획 - cpp로 구현한 최소 신장 트리
·
알고리즘
문제 개요문제 번호: 1647제목: 도시 분할 계획난이도: 골드 4링크: 백준 1647번문제 설명N개의 집이 있는데 연결되어있는 도로를 없애 N개의 집들을 2개의 마을 집단으로 분할해야한다.접근 방법도로를 지우는 것이 아닌 주어지는 M개의 도로에서 비용이 적은 도로를 선택한다.이때 마을1과 마을2는 서로 도로가 연결 되어 있으면 안된다. 즉 처음에 N개의 집을 각각의 집합으로 지정하고 도로를 연결할때 마다 집합을 합하여 2개의 집합으로 만들면 된다.이때 사용되는 알고리즘은 Union-Find를 이용한 크루스칼 알고리즘을 이용한다. 구현 코드#include#include#includeusing namespace std;int n, m;tuple edge[1000005];int p[100005];int fi..
[소켓 프로그래밍] TCP/IP 프로토콜
·
네트워크
TCP/IP 프로토콜 구조인터넷을 통해 통신을 수행하는 개체는 크게 호스트(Host)와 라우터(Router)로 나뉜다.호스트(Host): 최종 사용자(End-user)의 응용 프로그램(Application)을 수행하는 주체로 PC, 노트북, 스마트폰, 태블릿 등이 있다.라우터(Router): 호스트에서 생성된 데이터를 여러 네트워크를 거쳐 전송함으로써 서로 다른 네트워크에 속한 호스트 간에 데이터를 교환할 수 있도록 하는 장비다.라우터와 라우터, 호스트와 호트스가 통신하려면 서로간의 통신 절차와 방법을 정해야하는데 그것을 약속한 것을 통신 프로토콜(CommunicationProtocol)이라고 부른다.인터넷에서 사용하는 핵심 프로토콜인 TCP와 IP를 줄여서 TCP / IP라 부른다.응용 프로그램(App..
[Node.js 교과서] 섹션 2 - 알아두어야 할 자바스크립트
·
Node.js
호출스택노드는 자바스크립트 코드의 맨 위부터 한줄씩 실행하며 호출 스택에 순서대로 쌓아 놓고 맨 위에서부터 순서대로 하나씩 실행한다.코드를 실행할때 기본적으로 호출스택에 anonymous함수가 맨 처음 쌓이는데 이 함수는 처음 실행 시의 **전역 콘텍스트(global context)**를 의미하고 **콘텍스트(context)**란 함수가 호출되었을때 생성되는 환경을 의미한다.비동기 함수의 콜백함수를 실행하는데에 호출스택의 개념만으로는 설명이 안되고 이벤트 루프, 태스트 큐(task queue), **백그라운드라(backgound)**는 개념과 함께 설명한다.이벤트 루프: 노드가 종료될 때까지 이벤트 처리를 위한 작업을 반복하는 과정을 말한다. 이벤트 발생 시 호출할 콜백 함수들을 관리하고, 호출된 콜백 ..
[Node.js 교과서] 섹션 1 - 노드의 정의와 특성
·
Node.js
노드의 정의노드란 뭘까? 공식문서에서는 노드를 이렇게 설명한다.Node.js는 Chrome V8 Javascript 엔진으로 빌드된 자바스크립트 런타임입니다.노드는 서버가 아닌 런타임이다.자바스크립트 런타임(RunTime)런타임은 특정 언어로 만든 프로그램들을 실행할 수 있는 환경을 말한다.자바스크립트 자체는 원래 브라우저에서 밖에 실행 할 수 없었다. 그 이유는 브라우저에는 자바스크립트 런타임이 내장되었기 때문이다. 그래서 자바스크립트를 브라우저 이외에서 실행 하려면 별도의 런타임이 필요하다. 그게 바로 Node.js다.Node.js는 2008년 구글에서 만든 크롬에 탑재된 V8엔진을 사용해 개발되었다.노드는 V8엔진과 비동기작업을 처리하는 libuv 라이브러리를 사용한다.이렇기 때문에 노드는 서버가 ..
[CS] 32 Bit / 64 Bit 차이
·
공부기록
32비트 환경 운영체제 64비트 환경 운영체제라는 말을 들어봤을거다. 32비트 환경 운영체제는 32비트 아키텍쳐에 대응되는 운영체제를 말하고, 64비트 환경 운영체제는 64비트 아키텍쳐에 대응되는 운영체제를 말한다. 그렇다면 32비트와 64비트 아키텍쳐란 뭘까? 그것을 알아보자.기본개념비트(Bit)란?컴퓨터가 처리하는 이산 데이터의 양을 나타내는 가장 작은 단위이며 0과 1 이진법을 사용해 나타낸다.32비트와 64비트 아키텍처란?32비트 아키텍쳐: 한 번에 32비트 데이터 양을 처리할 수 있는 CPU구조64비트 아키텍쳐: 한 번에 64비트 데이터 양을 처리할 수 있는 CPU구조메모 주소 지정 능력 32비트 시스템: 이론적으로 최대 4GB의 RAM을 지원한다. 이는 2^32개의 메모리 주소를 사용할 수 있..