분류 전체보기

코딩테스트

프로그래머스 가장 먼 노드 [C++, 최장거리,BFS)

문제 https://school.programmers.co.kr/learn/courses/30/lessons/49189 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해설 이 문제를 처음 보고선, 단순하게 시작점부터 각 노드간의 최단 거리를 모두 찾고, 그 중 가장 긴 거리의 수를 고르려고 했다. 이 방법엔 2가지 솔루션이 있다. 1) 시작점에서 각 노드간의 거리를 다익스트라로 구하기: [ V*O(V^2) == O(V^3) ] 2) 플로이드 와샬로 각 정점들간의 최단 거리 모두 구한 뒤, 시작점에서 각노드간 최단거리만 사용하기 [O(V^3)] 하지만, 주..

코딩테스트

[2020 카카오 인턴십] 경주로 건설 c++ 문제 풀이 (다익스트라, 구조체)

https://school.programmers.co.kr/learn/courses/30/lessons/67259# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이요약: 다익스트라, 구조체 코드 #include #include #include #include using namespace std; int dw[4]={1,-1,0,0}; int dh[4]={0,0,1,-1}; int dist[1000][1000][2]; int INF = 98765432; struct edge { int cost; int w; int h; bool vertical; //우..

MSA, EDA, Reactive 패러다임

Node.js기반 Express VS java기반 Spring WebFlux

Spring mvc는 분명 "multi Thread, sync, Blcoking" 방식을 통해 Node.js 대비 이점이 존재하지만, 단점 역시 존재한다. 그리고 이러한 단점이 요즘의 애플리케이션 개발 트렌드에 적합하지 않기에 Spring webflux등의 Reactive Stack을 통한 리액티브 프로그래밍을 통해 이러한 단점을 극복하도록 지원한다. 하지만, Spring의 Reactive Stack와 유사하게, express 기반의 Node.js 역시 async, non-blocking, event-driven 방식을 사용한다. 이번 글에선 스프링 webflux와 유사하게 async, non-blocking, event-driven 방식을 사용하는 Node.js를 비교분석해보겠다. 1) Spring w..

코딩테스트

프로그래머스 보석 쇼핑 c++ [투포인트]

https://school.programmers.co.kr/learn/courses/30/lessons/67258 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해당 문제는 효율성 테스트가 존재하고, 투포인트로 풀어야 시간초과가 발생하지 않는다. 우선, 투포인트를 사용하지 않아 틀린 풀이를 확인해보자. 오답 풀이(시간 초과) #include #include #include #include #include using namespace std; map ma; pair getLen(){ int min=987654321,max=-987654321; for(aut..

MSA, EDA, Reactive 패러다임

(EDM) Event Driven MicroService 기초 지식 정리

MSA MSA(MicroService Architecture)는 소프트웨어 개발 기법의 하나이다. MSA는 단일 애플리케이션을 작은 서비스 모음으로 개발하는 접근 방식으로, 각 서비스는 자체 프로세스에서 실행이 되고 느슨한 연결(Loosely-coupled) 구조로 만들어 HTTP 리소스인 REST와 같은 경량 메커니즘과 통신한다. 한마디로 "하나의 큰 애플리케이션을 여러 개의 작은 애플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍처" 이다. Monolothic(모놀로식) 아키텍처는 ui - Business Logic - DataLayer 등으로 나누어져 1개의 서비스를 개발하는 것으로, 과거 많이 사용하던 방법이다. 최근 넷플릭스가 MSA로 전환을 성공하고, 넷플릭스 OSS라고 불리는 오픈소..

MSA, EDA, Reactive 패러다임

Reactive System과 event-driven Architecture

Reactive 패러다임 리액티브(Reactive) 패러다임은 비동기적인 데이터 흐름과 변경에 반응하는 프로그래밍 패러다임이다. 이 패러다임은 데이터 스트림에 대한 관찰과 반응을 중심으로 한다. 리액티브 시스템에서는 데이터의 변화나 이벤트를 발생시키는 작업들이 스트림 형태로 표현된다. 이 스트림은 연속적으로 도착하는 데이터나 이벤트의 시퀀스를 나타내며, 이러한 데이터 스트림에 대한 관찰과 처리가 중요한 역할을 한다. 리액티브 패러다임의 핵심 개념은 다음과 같다. 1) 데이터 스트림 (Data Streams): 데이터 스트림은 시간에 따라 연속적으로 도착하는 데이터나 이벤트의 흐름을 나타낸다 이러한 데이터 스트림은 비동기적으로 처리되며, 변화에 따라 업데이트될 수 있다. 2) 옵저버블 (Observable..

MSA, EDA, Reactive 패러다임

Request-Respone(Rest 통신) VS 비동기 메세지 통신(Pub-Sub)

Request-Response VS Event-Driven Application Request-Response 요청/응답 통신방법은 동기 통신에 단일 통신 방법으로, 요청자는 응답자의 주소를 알고 있어야 통신이 가능합니다. 이런 방식을 Point to Point 방식이라 한다. 이 방식은 서비스가 늘어나고, 복잡해 질수록 기억해야 주소가 늘어난다. 복잡하게 서비스들끼리 연결되어있다고 하여 스파게티 네트워크(Spaghetti network) 라고도 불린다. 동기 통신이기 때문에 응답 서비스가 항상 떠있어야 하고, 응답서비스에서 오랜 시간을 소비하면 그만큼 응답이 늦어지기진다. 또한 요청 채인이 길어지면 장애전파(Fault Spread)의 위험성이 있다. 장점: 명확한 요청과 응답: 클라이언트는 서버에게 필..

MSA, EDA, Reactive 패러다임

reactive programing [이론 정리]

리액티브 프로그래밍 리액티브 프로그래밍은 비동기적인 데이터 스트림을 다루기 위한 프로그래밍 패러다임이다. 이 패러다임은 데이터의 흐름을 중심으로 개발을 진행하며, 데이터의 변경에 반응하여 비동기적으로 처리합니다. 리액티브 프로그래밍은 확장성과 반응성이 중요한 애플리케이션에서 유용하게 활용된다. 리액티브 프로그램의 필요성 1년 치 구독료를 지불하였는데 배달이 오지 않고 1년 치 신문이 모두 준비되면 그제야 배달을 시작한다면 어떻게 될까? 실제로는 기사가 최신일 때 독자가 읽을 수 있도록 출간 후 가능한 빨리 배달된다. 또한 독자가 기사를 읽는 동안 기자는 새로운 다음 기사를 작성한다. 이 모든 것은 병행으로 진행된다. 이처럼 애플리케이션 코드를 개발할 때는 명령형(imperative)와 리액티브(react..

코앤미
'분류 전체보기' 카테고리의 글 목록 (7 Page)