본문 바로가기

Fundamental

(27)
[JavaScript] 요세푸스 순열 문제 요세푸스 문제는 다음과 같다. 1번부터 N번까지 N명의 사람이 원을 이루면서 앉아있고, 양의 정수 K(≤ N)가 주어진다. 이제 순서대로 K번째 사람을 제거한다. 한 사람이 제거되면 남은 사람들로 이루어진 원을 따라 이 과정을 계속해 나간다. 이 과정은 N명의 사람이 모두 제거될 때까지 계속된다. 원에서 사람들이 제거되는 순서를 (N, K)-요세푸스 순열이라고 한다. 예를 들어 (7, 3)-요세푸스 순열은 이다. N과 K가 주어지면 (N, K)-요세푸스 순열을 구하는 프로그램을 작성하시오. ((n,k) => { let arr = []; let result = []; for( let i=1; i
[JavaScript] 괄호의 매칭이 올바른지 확인하기 임의의 함수에 String 파라미터가 주어졌을 때, 괄호의 매칭이 올바른지 확인하는 JavaScript 소스 코드입니다. ((param) => { const sep = { "{":"}", "[":"]", "(":")" }; let arr = []; for( let i=0; i sep[k] === ch) ) { if ( sep[ arr[arr.length-1] ] === ch ) arr.pop(); else return console.log( false ); } } return console.log( arr.length ? false:true ); })("{ 123 ( 11 ) [ ] }123")
Multi-Tier Architecture란? 1. Multi-tier Architecture? Multi-tier Architecture는 애플리케이션을 n개의 여러 계층으로 나누어 개발하는 아키텍처입니다. 가장 많이 사용되는 3-Tier Architecture는 애플리케이션을 3개의 논리적/물리적 계층으로 나누는 소프트웨어 아키텍처입니다. 계층으로는 프레젠테이션 계층, 애플리케이션 계층, 데이터 계층이 있습니다. 1) 프레젠테이션 계층(Presentation Tier) 유저가 애플리케이션과 상호작용할 수 있는 UI(User Interface) 계층입니다. 주요 목적은 사용자에게 정보를 표시하고, 사용자의 데이터를 수집하는 것입니다. 웹 애플리케이션의 경우, 일반적으로 HTML, CSS, JavaScript를 사용해 개발합니다. 2) 애플리케이션 ..
JSON Web Token(JWT)을 소개합니다. 이 글은 아래 링크의 글을 번역한 글입니다. https://jwt.io/introduction JWT.IO JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties. jwt.io JSON Web Token이 뭔가요? JSON Web Token(JWT)는 당사자 간의 정보를 JSON 객체로 안전하게 전송하기 위한 간결하고 독립적인 방법을 정의하는 개방형 표준(RFC 7519)입니다. 이 정보는 디지털 서명되어 있기 때문에 검증되고 신뢰할 수 있습니다. JWT는 HMAC algorithm을 사용해 서명하거나, RSA/ECDSA 알고리듬을 사용한 공개/개인 키 ..
RESTful API란? RESTful API란 REST 아키텍처의 제약조건을 준수하는 API(Application Programmig Interface)를 뜻합니다. REST란 REpresentation State Transfer의 줄임말로, URI(Uniform Resource Identifier)로 자원을 표현하고, 자원의 상태를 HTTP Method(POST, GET, PUT, PATCH, DELETE ...)를 통해 주고받는 것을 뜻합니다. API란, 응용 프로그램들이 서로 상호작용할 수 있도록 도와주는 인터페이스입니다. 예를 들어, TV를 보고 싶을 때 리모컨을 사용하듯이 리모컨처럼 사람과 TV 두 개체의 상호작용을 도와주는 중간 매개체를 API라고 합니다. 결론적으로, RESTful API란 REST의 설계 원칙을 ..
소프트웨어 아키텍처 패턴(Software Architectural Pattern) 아키텍처 패턴(Architectural Pattern)은 소프트웨어 설계 단계에서의 반복되는 문제를 해결하기 위한 방법론으로, 시스템의 청사진과 같습니다. 구축 단계에서 실제 구현에 사용되는 디자인 패턴(Design Pattern)과는 범위적으로 다르다고 할 수 있습니다. 목차 1. MVC 패턴 2. MVP 패턴 3. MVVM 패턴 1. MVC 패턴 Model-View-Controller 조합의 설계 패턴으로,가장 흔히 사용되는 설계 패턴입니다. MVC 패턴에선 Application을 비즈니스 로직, 화면, 컨트롤러 로직으로 나누어 설계합니다. 1) Model : 데이터, 비즈니스 로직, 규칙을 담당 2) View : Client에게 보여지는 UI를 담당 3) Controller : Client의 요청..
다익스트라(Dijkstra's) 알고리듬 간략 정리 그래프의 시작 정점에서 다른 정점까지의 최단 경로를 계산하는 알고리듬 중 하나입니다. 다익스트라는 매 상황에서 비용이 가장 적게 드는 경로를 선택해 최단 경로를 계산하며, 거리를 계산하던 도중 현재까지 알고 있던 경로 비용보다 새로 알게된 경로의 총 비용이 더 적다면 총 비용을 갱신합니다. 1) 시작 정점을 설정 2) 시작 정점을 기준으로, 인접한 정점까지의 최소 비용을 저장 3) 아직 방문하지 않은 정점 중, 총 비용이 낮은 정점을 선택 4) 해당 정점을 거쳐서 특정 정점으로 가는 경우를 고려하여, 그 특정 정점까지의 최소 비용을 갱신 5) 위 과정에서 3~4번을 반복 위 그래프의 경우, 1번에서 5번 정점까지 최단 경로의 비용을 계산하고 있고, 저장과 갱신을 반복해서 최종적으로 최단 경로를 계산하게 ..
최소 비용 신장 트리 알고리즘 간략 정리 목차 1. 신장 트리(Spanning Tree) 2. Kruskal 알고리즘 3. Prim 알고리즘 1. 신장 트리(Spanning Tree) 신장 트리는 그래프 내 정점이 최소의 간선으로 모든 정점이 연결되어 있는 트리로, 사이클이 없는 그래프입니다. 신장 트리에 n 개의 정점이 있다면, 항상 n-1 개의 간선이 존재합니다. 최소 비용 신장 트리는 간선들의 비용 합이 최소가 되는 신장 트리를 뜻합니다. 대표적인 알고리듬으로는 Kruskal 알고리듬과 Prim 알고리듬이 있습니다. 2. Kruskal 알고리듬 전체 간선 중 비용이 낮은 간선을 우선적으로 선택해서 모든 정점을 사이클이 없도록 연결하는 방법으로, 간선의 수가 적을 때 적합합니다. 3. Prim 알고리듬 Kruskal과 달리, 시작 정점으로부..