전체 글 794

[Lv.1 / 프로그래머스 / 파이썬] 카드 뭉치

프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  풀이 goal에 있는 단어를 순회하며 두 카드 뭉치의 맨 앞에 있는 단어가 일치하는 경우 꺼내서 사용한다.두 카드 뭉치 모두에서 일치하는 단어가 없다면 No를 반환한다.goal을 모두 성공적으로 순회했다면 Yes를 반환한다. 두 카드 뭉치의 맨 앞에 있는 것부터 순차적으로 사용해야 하므로 스택으로 변형하여 pop()을 활용하였다. def solution(cards1, cards2, goal): cards1 = cards1[::-1] cards2 = cards2[::-1] for word ..

[Reactive Programming] Sinks

개요  [Reactive Programming] 리액티브 스트림즈(Reactive Streams)리액티브 스트림즈(Reactive Streams)란? 리액티브 스트림즈란 데이터 스트림을 Non-Blocking이면서 비동기적으로 처리하기 위한 리액티브 라이브러리의 표준 사양이다. 그 구현체로는 RxJava, Reactor, Akkmy-coding-notes.tistory.com 위 리액티브 스트림즈를 설명한 게시글에서 Processor에 대해 언급한 적이 있다. Processor는 Publisher와 Subscriber의 기능을 모두 지니는 클래스인데, Reactor에서도 Processor 인터페이스의 구현 클래스인 FluxProcessor, MonoProcessor, EmitterProcessor 등을 ..

[Lv.2 / 프로그래머스 / 파이썬] 마법의 엘리베이터

프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  풀이 그리디하게 접근해야 하는 문제이다. 알고리즘은 다음과 같다. 처음 주어진 수의 1의 자리 숫자부터 순회한다.1의 자리 숫자와 다음 자리 숫자를 추출1의 자리 숫자가 5보다 크거나, 5이고 다음 자리 숫자가 5 이상이면 올림 처리그 외의 경우에는 내림 처리결과 반환 def solution(storey): result = 0 while storey > 0: num = storey % 10 # 1의 자리 수 추출 next_digit = (storey // 10) % ..

[Reactive Programming] Backpressure

개요 만약 Publisher가 많은 데이터를 Emit 하는데 Publisher의 처리 속도가 현저히 느려 데이터가 계속해서 쌓인다면 오버플로우가 발생할 수도 있을 것이다. Backpressure는 우리말로 배압, 역압이라고 한다. 이름과 같이, Backpressure는 리액티브 프로그래밍에서 Publisher가 수많은 데이터를 Emit하는 상황에서 과부하가 걸리지 않도록 하는 역할을 한다.  Reactor에서의 Backpressure 처리 방식 Reactor에서의 Backpressure 처리 방식은 크게 두 가지가 있다. 1. 데이터 개수 제어Subscriber가 적절히 처리할 수 있는 수준의 데이터 개수를 Publisher에게 요청하는 방식이다. Subscriber를 상속한 BaseSubscriber를..

[Reactor] Cold Sequence와 Hot Sequence

개요 컴퓨터 시스템에서 사용되는 Cold와 Hot의 의미는 보통 Cold는 어떤 변경점 등을 적용할 때 시스템을 새로 시작(재기동)해야 하고, Hot은 새로 시작할 필요가 없는 것을 의미한다. Reactor에서의 Cold Sequence와 Hot Sequence의 Cold, Hot 역시 이와 비슷한 의미를 내포하고 있다. 설명에 앞서 Sequence의 의미를 되짚어보자면, 위 게시글에서 설명한 것과 같이  Publisher가 emit하는 데이터의 연속적인 흐름을 정의해 놓은 것을 의미하며, 코드로는 Operator 체인 형태로 정의된다.  Cold Sequence Cold Sequence는 Subscriber가 구독할 때마다 데이터 흐름이 처음부터 다시 시작되는 Sequence이다. 이를 마블 다이어그램..

[🥇3 / 백준 1082 / 파이썬] 방 번호

1082번: 방 번호스타트링크가 입주한 사무실은 방 번호를 직접 정할 수 있다. 방 번호를 정하려면 1층 문방구에서 파는 숫자를 구매해야 한다. 숫자를 구매하기 위해 준비한 금액은 M원이고, M원을 모두 사용해www.acmicpc.net 문제스타트링크가 입주한 사무실은 방 번호를 직접 정할 수 있다. 방 번호를 정하려면 1층 문방구에서 파는 숫자를 구매해야 한다. 숫자를 구매하기 위해 준비한 금액은 M원이다.문방구에서 파는 숫자는 0부터 N-1까지이고, 각 숫자 i의 가격은 Pi이다. 문방구에서는 같은 숫자를 여러 개 구매할 수 있고, 문방구는 매우 많은 재고를 보유하고 있기 때문에, 항상 원하는 만큼 숫자를 구매할 수 있다. 방 번호가 0이 아니라면 0으로 시작할 수 없다.예를 들어, N = 3, M ..

[🥇4 / 백준 1662 / 파이썬] 압축

1662번: 압축압축되지 않은 문자열 S가 주어졌을 때, 이 문자열중 어떤 부분 문자열은 K(Q)와 같이 압축 할 수 있다. K는 한자리 정수이고, Q는 0자리 이상의 문자열이다. 이 Q라는 문자열이 K번 반복된다는 뜻이www.acmicpc.net 문제압축되지 않은 문자열 S가 주어졌을 때, 이 문자열중 어떤 부분 문자열은 K(Q)와 같이 압축 할 수 있다. K는 한자리 정수이고, Q는 0자리 이상의 문자열이다. 이 Q라는 문자열이 K번 반복된다는 뜻이다. 압축된 문자열이 주어졌을 때, 이 문자열을 다시 압축을 푸는 프로그램을 작성하시오. 입력첫째 줄에 압축된 문자열 S가 들어온다. S의 길이는 최대 50이다. 문자열은 (, ), 0-9사이의 숫자로만 들어온다. 출력첫째 줄에 압축되지 않은 문자열의 길이..

[Reactor] 마블 다이어그램(Marble Diagram)

마블 다이어그램(Marble Diagram)이란? 마블 다이어그램이란 여러 도형을 사용하여 비동기적인 데이터 흐름을 시간의 흐름에 따라 시각적으로 표시한 다이어그램이다. 이는 비동기적으로 작동하는 Operator를 직관적으로 이해하기 유용하여, Operator의 API 문서를 확인하려 할 때 마블 다이어그램부터  먼저 확인하는 것이 좋다.  위는 Reactor Documentation에 있는 fluxOperator의 마블 다이어그램이다. 타임라인마블 다이어그램에서의 타임라인은 왼쪽에서 오른쪽으로 흐른다. 따라서 왼쪽에 있는 데이터(구슬)가 더 먼저 emit(통지)된 데이터에 해당한다. Source Flux구슬이 줄줄이 있는 맨 윗줄 라인은 Publisher가 통지하는 데이터의 타임라인으로, 위 그림에선 ..

[Lv.1 / 프로그래머스 / 파이썬] 둘만의 암호

프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr   풀이 제한사항이 매우 작으므로 특별한 알고리즘 없이 구현이 가능하다. 알고리즘은 다음과 같다. skip에 있는 문자열을 제외한 알파벳 목록을 구한다. 이를 skipped 라 칭한다.s를 순회하며 skipped에서 현재 알파벳의 인덱스를 찾아 index 만큼 더해준다. 이 때, skipped 의 총 길이를 초과한다면 그 나머지를 구한다.result에 2에서 구한 인덱스의 알파벳을 더한다. def solution(s, skip, index): skipped = [chr(i) for i in range(97,..

[Reactor] Reactor 개요

Reactor란? Reactor는 리액티브 스트림즈의 구현체로 리액티브 프로그래밍을 위한 라이브러리이다. Reactor의 Core 라이브러리는 Spring WebFlux 프레임워크에 라이브러리로 포함되어, WebFlux 기반의 리액티브 애플리케이션을 제작하기 위한 핵심 역할을 담당한다.  Reactor의 특징 1. Reactive Streams위에서 언급했지만, Reactor는 리액티브 스트림즈의 표준 사양을 구현한 구현체이다. 2. Non-BlockingReactor는 Non-Blocking 기반 애플리케이션을 제작하기 위한 핵심 기술이다. 해당 내용은 아래 게시글에 보다 자세히 언급되어 있다. [Reactive Programming] Blocking I/O와 Non-Blocking I/OBlockin..

반응형