알고리즘 문제를 이리저리 돌려가며 풀다가 Map을 스트림으로 다룰 때의 자료형이 필요했다. 일단 인텔리제이에서 알려주는 대로 사용해서 문제를 풀고, 따라가며 공부하기. Map.Entry 소개부터 하자면 Map.Entry는 자바 컬렉션 프레임워크의 Map 인터페이스의 내부 인터페이스이다. Map과 마찬가지로 키-값의 데이터를 저장하며, Map에서 .entrySet() 연산자를 호출하면 생성할 수 있다. 정확하게 말하자면 .entrySet()의 경우 이름 그대로 아래와 같은 Set을 생성하며, Map integerMap = new HashMap(); Set set = integerMap.entrySet(); 위 Set에 모든 엔트리 객체가 담겨있기 때문에 개별 Map.Entry를 제어하려면 그대로 스트림을..
[WebFlux]자주 사용하는 연산자 정리(2) - buffer [WebFlux]자주 사용하는 연산자 정리(3), 그리고 [WebFlux]자주 사용하는 연산자 정리(4) + 목차 Method vs. Operator 별생각 없이 메서드나 연산자라는 단어를 마구 뒤섞어 쓰다가 의문이 들었다. 같은 뜻의 단어를 두 개나 사용할 필요가 있을까? 하고. 해서 연산자 정리도 할 겸 아주 얕게 알아보았는데, 결론부터 말하면 둘은 다른 개념이지만 아주 남남은 아니다. 요약하면 아래와 같다. 메서드(Method) - 클래스나 객체 내부에 정의된 함수. Mono와 Flux 역시 내부에 많은 메서드를 가지고 있음 연산자(Operator) - 실제 연산에서 사용되는 메서드. 스트림의 데이터 처리를 연산이라고 부르기 때문에 붙..
원래 계획은 리액티브 스트림에 이어서 모노, 플럭스까지 정리하는 거였지만, 하나도 모르는 내가 한 번에 몰아 정리하기는 불가능하다는 판단이 들어 글을 나누었다. 읽고, 실습해도 이상하게 개념이 잡히지 않는 웹플럭스, 쪼개서 알아보자. Reactive Streams 리액티브 스트림은 비동기/논블로킹 처리를 위한 스트림 기반의 프로그래밍 모델이다. 또한 데이터 생산자와 소비자 사이에서 백프레셔를 지원해 데이터의 흐름을 제어할 수 있으며, 이는 리액티브 선언문에 쓰여있는 대로 병목현상이나 예기치 못한 소프트웨어의 정지를 방지한다. 리액티브 스트림의 탄생 이전에는 라이브러리마다 다른 방식으로 같은 목적의 프로그램을 구현해야 했으며, 2013년 넷플릭스와 레드햇을 위시한 기업들이 공동으로 개발하며 표준화 작업을 ..
오늘 아침까지만 해도 그게 그거라고 생각하고 내키는 대로 사용해 왔는데, 문득 굳이 같은 기능을 두 개나 만들었을 리가 없다는 생각이 들어 알아보게 되었다. 사전지식이 필요하다면 한없이 많이 필요하고 아니라면 아니라서, 일단 딱 둘의 공통점과 차이점에 대해서만 정리하고 넘어간다. CascadeType.Remove orphanRemoval = true 공통점 부모 엔티티 삭제시 자식 엔티티도 함께 삭제 차이점 연관관계를 끊어도 자식 엔티티 유지 연관관계가 끊기면 자식 엔티티 삭제
Hash 배열은 빠른 검색 속도를 가지고 있으나 삽입/삭제 시 많은 비용이 소모된다. 이를 극복한 LinkedList는 삽입/삭제의 비용이 적지만 데이터가 많아질수록 검색에 비용이 많이 든다. 해시는 이를 극복하기 위해 도입된 개념이다. 해시, 해시 함수(Hash Function)란 임의의 길이를 갖는 임의의 데이터를 받아 고정된 길이의 데이터를 리턴하는 단방향 함수를 말한다. 가장 쉬운 예로는 나머지 연산자(%)가 있을 수 있겠다. 해시 함수의 특징은 아래와 같으며, 비교적 간단한 알고리즘으로 시스템 자원을 덜 소모한다, 즉 해시값 생성에 많은 시간이 들지 않는다. 해시값을 해독할 때는 많은 시간이 든다. 같은 입력 값에 대해선 같은 출력 값이 보장되며, 출력 값은 고르게 분포한다. 입력값이 아주 조금..
목차 인증이 끝난 사용자를 애너테이션으로 분류하는 구현을 하다가 몇 가지 애너테이션을 만나게 되었다. 우선 (CP로)구현은 끝났는데 뭔지는 알고 넘어가야 할 것 같아서. 하나씩 알아보자. @Documented @AuthenticationPrincipal @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.PARAMETER, ElementType.TYPE}) public @interface SignInUser { } @Documented 해당 애너테이션이 메타 애너테이션으로 설정된 애너테이션을 JavaDoc에 포함시킨다. JavaDoc은 기본적으론 애너테이션에 대해선 문서화를 해주지 않는다고 한다. @AuthenticationPrincipal 인증이 끝난 ..

프로젝트에서 통계 자료를 만드는 김에 그 분석도 하면 좋겠다 싶었다. 물론 목적지는 파이썬이지만, 자바로도 비슷한 작업을 할 수 있다는 게 반가워서 가지고 노는 중이다. Gradle 기준 다음과 같은 의존성을 추가한다. dependencies { implementation group: 'tech.tablesaw', name: 'tablesaw-core', version: '0.43.1' // 데이터 분석 implementation group: 'tech.tablesaw', name: 'tablesaw-jsplot', version: '0.43.1' // 데이터 시각화 } 나머지 의존성은 어차피 알아서 하는 거니까 생략했다. 나는 총 두 개의 CSV파일을 이용해서 연습을 진행했다. 하나는 친절하게 한글로 ..
문제 해빈이는 패션에 매우 민감해서 한번 입었던 옷들의 조합을 절대 다시 입지 않는다. 예를 들어 오늘 해빈이가 안경, 코트, 상의, 신발을 입었다면, 다음날은 바지를 추가로 입거나 안경대신 렌즈를 착용하거나 해야한다. 해빈이가 가진 의상들이 주어졌을때 과연 해빈이는 알몸이 아닌 상태로 며칠동안 밖에 돌아다닐 수 있을까? 입력 첫째 줄에 테스트 케이스가 주어진다. 테스트 케이스는 최대 100이다. 각 테스트 케이스의 첫째 줄에는 해빈이가 가진 의상의 수 n(0 ≤ n ≤ 30)이 주어진다. 다음 n개에는 해빈이가 가진 의상의 이름과 의상의 종류가 공백으로 구분되어 주어진다. 같은 종류의 의상은 하나만 입을 수 있다. 모든 문자열은 1이상 20이하의 알파벳 소문자로 이루어져있으며 같은 이름을 가진 의상은 ..
문제 트럭을 타고 이동하던 상근이는 경찰의 검문을 받게 되었다. 경찰은 상근이가 운반하던 화물을 하나하나 모두 확인할 것이기 때문에, 검문하는데 엄청나게 오랜 시간이 걸린다. 상근이는 시간을 때우기 위해서 수학 게임을 하기로 했다. 먼저 근처에 보이는 숫자 N개를 종이에 적는다. 그 다음, 종이에 적은 수를 M으로 나누었을 때, 나머지가 모두 같게 되는 M을 모두 찾으려고 한다. M은 1보다 커야 한다. N개의 수가 주어졌을 때, 가능한 M을 모두 찾는 프로그램을 작성하시오. 입력 첫째 줄에 종이에 적은 수의 개수 N이 주어진다. (2 ≤ N ≤ 100) 다음 줄부터 N개 줄에는 종이에 적은 수가 하나씩 주어진다. 이 수는 모두 1보다 크거나 같고, 1,000,000,000보다 작거나 같은 자연수이다. ..

문제 어린 왕자는 소혹성 B-664에서 자신이 사랑하는 한 송이 장미를 위해 살아간다. 어느 날 장미가 위험에 빠지게 된 것을 알게 된 어린 왕자는, 장미를 구하기 위해 은하수를 따라 긴 여행을 하기 시작했다. 하지만 어린 왕자의 우주선은 그렇게 좋지 않아서 행성계 간의 이동을 최대한 피해서 여행해야 한다. 아래의 그림은 어린 왕자가 펼쳐본 은하수 지도의 일부이다. 빨간 실선은 어린 왕자가 출발점에서 도착점까지 도달하는 데 있어서 필요한 행성계 진입/이탈 횟수를 최소화하는 경로이며, 원은 행성계의 경계를 의미한다. 이러한 경로는 여러 개 존재할 수 있지만 적어도 3번의 행성계 진입/이탈이 필요하다는 것을 알 수 있다. 위와 같은 은하수 지도, 출발점, 도착점이 주어졌을 때 어린 왕자에게 필요한 최소의 행..
- Total
- Today
- Yesterday
- 칼이사
- 남미
- spring
- 알고리즘
- 파이썬
- a6000
- 야경
- 세모
- 백준
- BOJ
- 중남미
- 스프링
- 동적계획법
- 세계여행
- RX100M5
- 리스트
- 맛집
- 유럽여행
- Backjoon
- 세계일주
- 기술면접
- Algorithm
- 유럽
- Python
- java
- 면접 준비
- 지지
- 여행
- 스트림
- 자바
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |