본문 바로가기

전체 글657

[Leetcode][576] Out of Boundary Paths 문제 : https://leetcode.com/problems/out-of-boundary-paths/ DP. 메모이제이션이 필요하다. 남은 maxCount 횟수, 현재 좌표가 같다면 정답 횟수는 같아진다. 즉, dp[maxCount][row][column] = 경계를 벗어나는 경로 횟수 를 저장한다. dp[maxCount][row][column] = dp[maxCount-1][row][column+1] + dp[maxCount-1][row][column-1] + dp[maxCount-1][row+1][column] + dp[maxCount-1][row-1][column] 이동은 상하좌우로 할 수 있기 때문에 점화식은 다음과 같다. 더한 값에 1000000007을 나눈 나머지값을 저장해줘야한다. 만일 r.. 2021. 6. 25.
[채팅] 1. Spring boot WebSocket Handler 기본 세팅 // ReactiveWebSocketHandler.kt @Component class ReactiveWebSocketHandler : WebSocketHandler { private val log = LoggerFactory.getLogger(this.javaClass) override fun handle(session: WebSocketSession): Mono { return session.receive() .map { it.payloadAsText.also { log.info(it) } }.then() } } WebSocketHandler 인터페이스를 상속받은 클래스를 만들어 Component로 등록한다. handle에서 메시지가 들어올 때, 할 일 들을 명시해줘야하는데 일단은 돌아가는지 확인하는 .. 2021. 6. 22.
[leetcode][118] Pascal's Triangle 문제 : https://leetcode.com/problems/pascals-triangle/ numRows가 주어질 때, numRows 크기의 파스칼의 삼각형을 구하여라. 파스칼의 삼각형의 원소는 바로 위에 있는 두 원소의 합이다. answer[i][j] = answer[i-1][j-1] + answer[i-1][j] 위 연산을 모든 원소에 적용하면 답을 수할 수 있다. 시간복잡도는 1+2+ ... + numRows = 대략 O(numRows^2 /2). 소스코드 : https://github.com/fpdjsns/Algorithm/blob/master/leetcode/easy/118.%20Pascal's%20Triangle.cpp 2021. 6. 22.
[leetcode][778] Swim in Rising Water] 문제 : https://leetcode.com/problems/swim-in-rising-water/ N x N 배열 grid가 입력으로 주어진다. grid[i][j] = (i,j) 위치의 높이. 시간 t에서 모든 grid 위치의 수심은 t이고, 인접한 위치의 고도가 t 이하인 경우에만 이동가능하다. 이동하는데 드는 시간은 고려하지 않는다. grid의 (0,0)에서 (N-1, N-1)로 이동할 때 도달할 수 있는 최소시간은 얼마인가 이동하는데 드는 시간은 고려하지 않으므로 결국 (0, 0) -> (N-1, N-1)로 이동하는 경로의 고도값들의 최대값의 최소값을 구하는 문제이다. 다익스트라로 풀었다. 간선의 가중치는 u -> v로 이동한다고 했을 때, v 위치의 높이가 된다. 즉, 높이가 낮은 인접한 위치.. 2021. 6. 21.
[leetcode][795] Number of Subarrays with Bounded Maximum 문제 : https://leetcode.com/problems/number-of-subarrays-with-bounded-maximum/ 양수 배열 nums, 두 개의 양수 left, right 가 입력으로 주어진다. nums 배열의 하위배열(연속적인 부분배열. 비어있지 않음)의 최대 원소가 left 이상, right 이하인 하위배열들의 수를 구해라. 재미있는 투포인터문제~ nums를 처음부터 탐색하면서 정답이 될 수 있는 범위를 l, r 변수에 저장한다. (l = 왼쪽, r = 오른쪽 인덱스) l 변수는 nums[i]가 부분배열에 포함될 때 정답이 절대 불가능할 때 갱신한다. 최대값만 left, right를 비교하기 때문에 정답이 절대 불가능한 경우는 nums[i]가 right보다 큰 경우이다. r 변.. 2021. 6. 19.
[210617] 역재 나루호도 컬렉션 클리어 야하리 초상화는 자신있다더니 진짜 재능있네. 역재3 마지막 챕터만 남겨두고 저녁먹으면서 잠깐 플레이하려고 했는데 끝까지 달려버렸다. 소생하는역전 제일 좋아하긴한데 왜 사람들이 3편이 제일 명작이라는지 알 거 같다. 왜 한때 게임에 미쳐살았었는지 기억남. 아 행복별거 없다. 너무 행복해, 지금이라면 예전에 사둔 역재5도 일주일만에 깰수있을거 같은 기분이야 2021. 6. 17.