목록전체 글 (120)
할머니의 콤퓨타 도전기
다익스트라(Dijkstra) 알고리즘 다이나믹 프로그래밍을 활용한 대표적인 최단 경로탐색 알고리즘 다익스트라 알고리즘은 특정 하나의 정점에서 다른 모든 정점으로 가는 최단 경로를 알려줌 (음의 간선은 포함 X) 다익스트라 알고리즘에서 최단 거리는 여러 개의 최단거리로 이루어져있기 때문에 작은 문제가 큰 문제의 부분 집합에 속해 있다고 할 수 있음 따라서 다이나믹 프로그래밍 문제 작동 과정 출발 노드 설정 출발 노드를 기준으로 각 노드의 최소 비용 저장 방문하지 않은 노드 중 가장 비용이 적은 노드 선택 해당 노드를 거쳐서 특별한 노드로 가는 경우를 고려해 최소 비용 갱신 3~4번 반복 0 2 5 1 무한 무한 2 0 3 2 무한 무한 5 3 0 3 1 5 1 2 3 0 1 무한 무한 무한 5 1 0 2 ..
트리의 지름 트리에서 임의의 두 점 사이의 거리 중 가장 긴 것 트리의 지름 구하는 방법 임의의 점(A)에서 가장 먼 지점 B를 찾음 B에서 가장 먼 지점(C)를 찾음 B~C의 거리가 트리의 지름 증명 (귀류법) 관련 문제 www.acmicpc.net/problem/1167 1167번: 트리의 지름 트리가 입력으로 주어진다. 먼저 첫 번째 줄에서는 트리의 정점의 개수 V가 주어지고 (2≤V≤100,000)둘째 줄부터 V개의 줄에 걸쳐 간선의 정보가 다음과 같이 주어진다. (정점 번호는 1부터 V까지 www.acmicpc.net
AJAX javaScript의 라이브러리 중 하나 브라우저가 갖고 있는 XMLHttpRequest 객체를 이용해 전체 페이지를 새로 고치지 않고도 페이지의 일부만을 위한 데이터를 로드하는 기법 JavaScript를 사용한 비동기 통신, 클라이언트와 서버간에 XML 데이터를 주고 받는 기술 자바스크립트를 통해서 서버에 데이터를 요청하는 것 비동기 방식 웹페이지를 리로드하지 않고 데이터를 불러오는 방식 Ajax를 통해 서버에 요청을 한 후 멈춰있는 것이 아니라 그 프로그램은 계속 돌아간다는 의미를 내포 비동기 방식 장점 페이지 리로드의 경우 전체 리소스를 다시 불러와야해 재요청할 경우 불필요한 리소스 낭비 발생 비동기 방식을 이용할 경우 필요한 부분만 불러와 사용할 수 있음 AJAX를 사용가능하게 만드는 것..
API (Application Programming Interface) 응용 프로그램이 서로 통신할 수 있도록하는 일련의 규칙 개발자는 서버에 API를 만들어 클라이언트와 대화할 수 있음 REST (Representational State Transfer) 분산 네트워크 프로그래밍의 아키텍처 스타일 REST는 API의 구조(모양) 중 하나 검색창에 입력하여 전송하는 것이 request, 검색된 결과를 서버에서 보내주는 것이 response Request 4가지로 구성 The endpoint The method The headers The data (or body) 엔드 포인트 (The endpoint) 요청한 url root-endpoint/? root-endpoint는 클라이언트가 요청한 API의 시작..
Oauth Resource Owner Client(서비스)를 이용하는 자, Resource Server에 가입이 되어있는 정보의 주인 Client Resource Owner의 정보를 Resource Server로 부터 요청하는 Client Resource Owner에게 서비스를 제공하는 자 Resource Server Resource Owner의 정보를 보관하고 있는 자로 Resource Owner로 부터 인증을 받아 client에게 Resource Owner의 정보를 제공하는 정보 보관소 아이디와 비밀번호 이용 안함 먼저 Client가 Resource Owner (User)에게 서비스를 제공하기 위해 Resource Server에게 필요한 정보 요청 Resource Server가 Resource Own..
Resource Server 개발자들이 프로그램을 쉽게하기 위해 특정 기능들을 API로 제공하는 구글, 파이어베이스 등을 의미 Client Resource Server의 서비스를 이용하는 우리의 프로그램 Interface 어떠한 기능을 사용하기 위해 그 기능이 동작하는 어려운 과정은 생각하지 않고 쉽게 이용할 수 있도록 함 예를 들어, 쉘은 사용자가 운영체제를 이용하기 위한 인터페이스 API는 어플리케이션을 쉽게 이용하기 위한 인터페이스 UI 시스템과 사용자가 통신하기 위한 접접 API 프로그램이 라이브러리를 호출하기 위한 접점 API는 프로그램이 다른 프로그램을 제어하기 위한 인터페이스 API로 호출되는 프로그램의 내부를 모르더라도 쉽게 사용 가능 코드의 재사용성을 높여 개발 생산성을 높이고 중복 줄임..