매일 매일, 차곡 차곡 쌓기



완벽하지 않은 것을 두려워 말며,
완성도를 높히는데 집중하자.

분류 전체보기 77

Scheduler의 종류

1. Scheduler의 종류: Schedulers 클래스의 정적 메서드로 제공 됨 1.1 Schedulers.immediate() 별도의 쓰레드를 추가 할당하지 않고, 현재 쓰레드에서 실행된다. Flux.fromArray(new Integer[] {1, 3, 5, 7}) .publishOn(Schedulers.parallel()) .filter(data -> data > 3) .doOnNext(Logger::doOnNext) .publishOn(Schedulers.immediate()) .map(data -> data * 10) .doOnNext(Logger::doOnNext) .subscribe(Logger::onNext); 1.2 Schedulers.single() 하나의 쓰레드를 재사용한다. 쓰레..

Spring/Webflux 2024.02.29

Scheduler

Scheduler를 위한 전용 Operator publishOn() : Operator 체인에서 Downstream Operator의 실행을 위한 쓰레드를 지정한다. subscribeOn() : 최상위 Upstream Publisher의 실행을 위한 쓰레드를 지정한다. 즉 원본 데이터 소스를 emit하기 위한 스케줄러를 지정한다. paraller(): Downstream 에 대한 데이터 처리를 병렬로 분할 처리하기 위한 쓰레드를 지정한다. ParallelFlux의 동작 방식 Flux.fromArray(new Integer[]{1, 3, 5, 7, 9, 11, 13, 15}) .parallel() .subscribe(Logger::onNext); Flux.fromArray(new Integer[]{1, 3..

Spring/Webflux 2024.02.29

Sinks

1. Sinks 란? Reactive Streams 에서 발생하는 signal을 프로그래밍적으로 push할 수 있는 기능을 가지고 있는 Publisher 의 일종이다. Thread-Safe 하지 않을 수 있는 Processor 보다 더 나은 대안이 된다. Trhead-Safe : 멀티 스레드 환경에서 공유 자원에 접근하여 로직을 수행했을 시 문제가 없는것을 의미. (교착, 올바르지 않는 값 계산) Sinks는 Thread-Safe 하게 signal을 발생 시킨다. Sinks 는 Sinks.Many 또는 Sinks.One infterface를 사용해서 Thread-Safe 하게 signal을 발생시킨다.

Spring/Webflux 2024.02.29

Backpressure

1. Publisher와 Subscriber 간의 프로세스 subscribe : Subscriber에서 subscribe 를 호출하여 구독 onSubscribe : Publisher에서 구독이 정상적으로 이루어졌음을 알리는 onSubscribe 시그널 발생 request : Subscriber는 Publisher에게 request 시그널로 데이터 요청 onNext : Publisher는 전달받은 request 시그널에 해당하는 onNext 시그널을 Subscriber에게 전송하면서 데이터를 emit onComplete : Publisher측에서 emit 할 데이터가 없으면 Subscriber에게 onComplete 시그널을 발생 onError : 데이터를 emit하는 과정중에서 에러가 발생하게 되면 on..

Spring/Webflux 2024.02.29

Softeer Lv3 - 효도 여행

문제 https://softeer.ai/practice/7649 Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai 풀이 시간 : 6시간 시도 횟수 : 18 복기 문제를 잘못 읽어 시간을 낭비했다 세번째 줄 부터 N-1 개의 줄이 나온다는 것과, 행복지수는 LCS 의 길이로 결정된다는것 나는 최대 행복지수 길이의 갯수가 최대 행복지수가 되는 줄 알았다 ㅠ 3이라고 하면, ABC, BCA, DDD 3개니깐 3 이라고 생각했지만 이는 잘못된 생각이었다. 문제 풀이 방법은 간단했다. Leaf 노드까지의 거리를 계산 + LCS LCS를 너무 오랜만에 봐서 기억을 더듬어 가며 구현하여 시간이 많이 걸렸다. 그 결과 시간초과가 났다.... >> 자꾸 시간초과 나는 것을 생각치 못한다. 시간초과를 ..

알고리즘 2024.02.17

Softeer Lv3 - 나무섭지

문제 https://softeer.ai/practice/7726 Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai 풀이 시간 : 6시간 시도 횟수 : 9 복기 정답률에 비해 문제가 쉽다고 생각했지만, 정작 6시간정도 풀었다. 풀이 접근법을 순서대로 적어봤다. 1. 남우의 출구 까지 최단거리 길 저장 + 유령이 잡을수 있는지 판단 (x, y) 좌표로 이루어진 남우의 최단 거리 길들을 저장한다. 남우의 최단거리 길들 중 유령에게 잡히지 않는 길이 하나라도 있다면 탈출로 간주한다. 유령에게 잡히는 조건은 남우의 x,y 좌표와 유령의 x,y 좌표의 맨해튼 거리를 계산하여, 남우의 걸어온 길이보다 유령이 짧으면 잡힌것이다. 그 결과 시간 초과가 났다. 2. 반복문으로 각 좌표별로 유령이 갈 수..

알고리즘 2024.02.17

Softeer Lv3 - 함께하는 효도

문제 https://softeer.ai/app/assessment/index.html?xid=90203&xsrfToken=7hjE55UE6Y45xwU1wgUihTTAMos0vMlv&testType=practice Candidate | Softeer Assessment UI softeer.ai 풀이 시간 : 120분 시도횟수 : 4 복기 소프트티어 첫문제이다. 입력을 어떻게 받는지 꽤 해맸다.. 알고보니 백준의 Scanner 입력방식과 동일했고, 오랜만이라 어떻게 입력받는지 고민하다가 시간을 또 썼다. 문제는 백트래킹 + 순열 이다. 백트래킹을 구현했는데, 제출하니 실패란다.. 틀린 풀이방법이 아니라 부분점수가 있을줄알았는데 왜 없지..? 했는데 세부 내역을 보니 3번 테케가 틀렸다. 왜 틀렸는지 고민을 ..

알고리즘 2024.02.11

프로그래머스 Lv2 - 광물 캐기

문제 https://school.programmers.co.kr/learn/courses/30/lessons/172927 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 시간 : 60분 시도 횟수 : 1 복기 나는 BFS 풀이 방법이 생각나서 BFS 로 풀었다. 다만 DFS 풀이방법도 동시에 떠올리는게 유연한 사고측면에서 중요한거같다. 메모이제이션하며 최적화도 할 수 있지만, 문제에서 요구하진 않았다. import java.util.*; import java.util.stream.Collectors; class Solution { int[][] co..

알고리즘 2024.02.11

프로그래머스 Lv2 - 과제 진행하기

문제 https://school.programmers.co.kr/learn/courses/30/lessons/176962 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 시간 : 대략 180분.. 시도 횟수 : 3 복기 문제만 꼼꼼히 읽으면, 쉽게 풀 수 있는 단 순 구현 문제 였다. 만, 구현하는데 오랜 시간이 걸렸다. 1. 시계열 데이터를 다루는데 오래 걸렸다. 다음에는 좀 더 빠륵 ㅔ풀자 1.1 정렬의 어려움 String으로 LocalTime 으로 만들고 Comparator 로 정렬하고 그랬는데, 그냥 Comparator 로 시계열을 정렬할 수 ..

알고리즘 2024.02.08

프로그래머스 Lv2 - 요격 시스템

문제 https://school.programmers.co.kr/learn/courses/30/lessons/181188 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이시간 : 92분 시도 횟수 : 2 복기 예전에 비슷한 유형의 문제를 풀어봤음에도 불구하고, 풀이가 오래 걸렸다. 풀이에 대한 확신없이 로직을 만들어 통과하였는데, 풀이에 대한 근거를 확보하는것이 어려워 이부분 보충이 필요하다. import java.util.*; class Solution { public int solution(int[][] targets) { int N = targ..

알고리즘 2024.02.06