분류 전체보기 799

[🥇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..

[Reactive Programming] 리액티브 프로그래밍을 위한 사전 지식

함수형 인터페이스(Functional Interface) 함수형 인터페이스란 단 하나의 추상 메서드를 갖는 인터페이스로, 함수를 일급 객체로 취급하여 함수 자체를 파라미터로 전달할 수 있는 기법이다. 자바에서 이같은 함수형 인터페이스라는 개념은 자바 8부터 추가되었으나, 그 이전에도 함수형 인터페이스처럼 사용하는 것이 있었는데 바로 Comparator이다. 예제 코드public class Example4_1 { private static final List cryptoCurrencies = SampleData.crytoCurrencies; public static void main(String[] args) { cryptoCurrencies.sort(new Comparator() { @Overrid..

[Reactive Programming] Blocking I/O와 Non-Blocking I/O

Blocking I/O   Blocking I/O의 설명을 위한 예시 그림이다. 본사 서버의 스레드가 지점 서버에 데이터를 요청하면 해당 데이터를 반환받을 때까지 스레드는 대기 상태가 되며 다른 작업을 처리하지 못한다. 이렇게 하나의 스레드가 I/O에 의해 차단되어 대기하는 것을 Blocking I/O라 한다. 이같은 Blocking I/O의 단점을 극복하기 위해 멀티스레딩 기법을 이용하여 추가 스레드들을 할당해  동시 작업이 가능하게끔 한다. 멀티스레딩 기법의 단점1. 컨텍스트 스위칭멀티스레딩의 작동 방식은 사실 하나의 프로세서가 여러 개의 스레드를 번갈아서 실행하는 것이다. 이때, 스레드를 전환하는 과정에서 오버헤드가 발생하게 되어 스레드가 많아질수록 CPU의 성능 저하가 일어날 수 있다. 2. 메모..

[🥇4 / 백준 16120 / 파이썬] PPAP

16120번: PPAP첫 번째 줄에 문자열이 주어진다. 문자열은 대문자 알파벳 P와 A로만 이루어져 있으며, 문자열의 길이는 1 이상 1,000,000 이하이다.www.acmicpc.net 문제bryan은 PPAP를 좋아한다. bryan은 어떻게 하면 사람들에게 PPAP를 전파할 수 있을까 고민하던 중 PPAP 문자열이라는 것을 고안하게 되었다.PPAP 문자열은 문자열 P에서 시작하여, 문자열 내의 P를 PPAP로 바꾸는 과정을 반복하여 만들 수 있는 문자열로 정의된다. 정확하게는 다음과 같이 정의된다.P는 PPAP 문자열이다.PPAP 문자열에서 P 하나를 PPAP로 바꾼 문자열은 PPAP 문자열이다.예를 들어 PPAP는 PPAP 문자열이다. 또한, PPAP의 두 번째 P를 PPAP로 바꾼 PPPAPAP..

[Lv.2 / 프로그래머스 / SQL] 연도 별 평균 미세먼지 농도 조회하기

프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이 수원 지역의 미세먼지 농도를 연도를 기준으로 묶어 평균값을 출력해야 한다.  DATE 타입의 데이터에 YEAR 함수를 이용해 연도를 구할 수 있다. AVG 함수를 통해 평균값을, 그리고 ROUND 함수를 통해 반올림을 수행할 수 있다. SELECT YEAR(YM) AS YEAR, ROUND(AVG(PM_VAL1), 2) AS PM10, ROUND(AVG(PM_VAL2), 2) AS 'PM2.5'FROM AIR_POLLUTIONWHERE LOCATION2 = '수원'GROUP BY ..

[Lv.1 / 프로그래머스 / SQL] 한 해에 잡은 물고기 수 구하기

프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  풀이 집계 함수인 COUNT를 이용하여 데이터의 개수를 조회할 수 있다. 그리고 YEAR 함수를 활용해 DATE 타입에서 연도를 구할 수 있다. SELECT COUNT(ID) AS FISH_COUNTFROM FISH_INFOWHERE YEAR(TIME) = '2021'

반응형