분류 전체보기
leetcode - 862. Shortest Subarray with Sum at Least K
leetcode - 862. Shortest Subarray with Sum at Least K
2024.11.17https://leetcode.com/problems/shortest-subarray-with-sum-at-least-k/description/?envType=daily-question&envId=2024-11-17 Approach해당 문제를 O(N) 시간 복잡도로 문제를 해결 하기 위해서 PrefixSum 과 단조 증가 (Monotonic increasing) Queue 를 사용할 예정입니다. 해당 문제를 한글로 번역해보자면 다음과 같습니다. 정수 배열 nums와 정수 k가 주어졌을 때, 다음 조건을 만족하는 가장 짧은 부분 배열의 길이를 반환하세요:부분 배열의 합이 최소한 k 이상이어야 함부분 배열은 비어있지 않아야 함만약 이러한 조건을 만족하는 부분 배열이 존재하지 않는다면 -1을 반환여기서 **..
leetcode: Maximum Sum Circular Subarray (kadane 알고리즘)
leetcode: Maximum Sum Circular Subarray (kadane 알고리즘)
2024.11.10https://leetcode.com/problems/maximum-sum-circular-subarray/ 해당 문제는 kadane 알고리즘 방법으로 접근하여 문제를 해결 하였습니다. Approach Kadane's algorithm을 사용하여 일반적인 최대 부분합을 O(n)에 구합니다.순환하는 경우는 전체 합에서 최소 부분합을 빼서 구합니다.모든 원소가 음수인 경우는 별도로 처리합니다.시간복잡도: O(n) 공간복잡도: O(1)전체 배열의 합 (total): 5 + (-3) + 5 = 7최소 부분합 (minSum): -3연속된 부분 배열 중 가장 작은 합total - minSum = 7 - (-3) = 10이것이 바로 [5,5]를 선택했을 때의 합과 같습니다!이렇게 되는 이유는:순환 배열에서 양 끝의 ..
Docker 리소스 제약 (Resource constraints) 에 대하여
Docker 리소스 제약 (Resource constraints) 에 대하여
2024.10.25기본적으로 container resource 는 제약이 없으며 호스트의 커널 스케줄러가 허용하는 한계치 까지 주어진 리소스를 최대한 사용할 수 있습니다. 하나의 machine (Ubuntu) 이 cpu 4 core / memory 8GB 라고 가정했을때 4개의 application 을 실행하고 2개의 application 에 메모리 누수가 있다고 가정했을때 2개 의 application 모두 8GB 까지 메모리를 사용하려고 합니다 해당 상황은 해당 Ubuntu machine 을 shutdown 시키는 결과를 초래 할 수 있고 운영 상황에서는 큰 장애로 이어 질 수 있습니다. 그럼 해당 이슈를 어떻게 우아하게 처리 할 수 있는지 알아 보겠습니다 이 글은 Docker 공식문서를 참고했습니다.https://d..
Leetcode - Gas Station
Leetcode - Gas Station
2024.03.02Problem There are n gas stations along a circular route, where the amount of gas at the ith station is gas[i]. You have a car with an unlimited gas tank and it costs cost[i] of gas to travel from the ith station to its next (i + 1)th station. You begin the journey with an empty tank at one of the gas stations. Given two integer arrays gas and cost, return the starting gas station's index if you ..
Leetcode86. partition list (kotlin)
Leetcode86. partition list (kotlin)
2023.04.22https://leetcode.com/problems/partition-list/ Partition List - LeetCode Can you solve this real interview question? Partition List - Given the head of a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x. You should preserve the original relative order of the no leetcode.com Given the head of a linked list and a value x, partition..
Leetcode79. Word Search (w. kotlin)
Leetcode79. Word Search (w. kotlin)
2023.04.16Given an m x n grid of characters board and a string word, return true if word exists in the grid. The word can be constructed from letters of sequentially adjacent cells, where adjacent cells are horizontally or vertically neighboring. The same letter cell may not be used more than once. Example 1: val board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]] val word = "SEE" Output: true..
Kubenetes 배포시 5xx 이슈에 대한 해결책
Kubenetes 배포시 5xx 이슈에 대한 해결책
2023.03.24쿠버네티스를 사용하여 어플리케이션을 배포 할때 5xx 에러를 만날때가 있다. 제일 처음으로 확인해볼건 probe 설정이다. livenessProbe 컨테이너가 동작 중인지 여부를 나타낸다. 만약 활성 프로브(liveness probe)에 실패한다면, kubelet은 컨테이너를 죽이고, 해당 컨테이너는 재시작 정책 의 대상이 된다. 만약 컨테이너가 활성 프로브를 제공하지 않는 경우, 기본 상태는 Success 이다. readnessProbe 컨테이너가 요청을 처리할 준비가 되었는지 여부를 나타낸다. 만약 준비성 프로브(readiness probe)가 실패한다면, 엔드포인트 컨트롤러는 파드에 연관된 모든 서비스들의 엔드포인트에서 파드의 IP주소를 제거한다. 준비성 프로브의 초기 지연 이전의 기본 상태는 Fa..
spring boot jib 를 사용 하여 배포 자동화 하기 (w. github action)
spring boot jib 를 사용 하여 배포 자동화 하기 (w. github action)
2023.03.23jib 란? Jib는 Dockerfile을 사용하지 않거나 Docker를 설치할 필요 없이 컨테이너를 빌드할 수 있도록 도와주는 도구이다. 특히 자바 컨테이너를 빌드하는 데 사용하는 도구이며, Maven과 Gradle 용 플러그인을 이용해 사용할 수도 있고 Jib 자바 라이브러리를 통해 사용할 수도 있다. 적용해보기 build.gradle.kts plugin { ... id("com.google.cloud.tools.jib") version "3.1.2" apply false ... } 버전은 해당 spring boot, kotlin, java 버전에 맞게 설정 이 필요하다. val stage: String? by project // github action 에서 -Pstage=alpha 옵션으로 주입 ..
CloudFront 와 Browser cache
CloudFront 와 Browser cache
2022.11.26Cloud front 란? https://docs.aws.amazon.com/ko_kr/AmazonCloudFront/latest/DeveloperGuide/Introduction.html Amazon CloudFront란 무엇입니까? - Amazon CloudFront Amazon CloudFront란 무엇입니까? Amazon CloudFront는 .html, .css, .js 및 이미지 파일과 같은 정적 및 동적 웹 콘텐츠를 사용자에게 더 빨리 배포하도록 지원하는 웹 서비스입니다. CloudFront는 엣지 로케이션 docs.aws.amazon.com cloud front 설정의 cache 의 TTL 을 설정할때 min, max default 값이 있따는 것은 Origin (s3) 에서 보낸 Meta..
순열(Permutation) 구하기 with kotlin
순열(Permutation) 구하기 with kotlin
2022.11.261, 2, 3 이라는 배열이 주어졌을때 해당 element 에 대해서 permutation 을 구한다고 가정해봅시다. 경우의 수는 총 6 가지 입니다 6개의 경우의 수가 나온는 것을 증명 하려면 첫번째 자리수에 올수 있는 것들은 총 [1, 2, 3] 세가지 중 하나 입니다. 두번째 자리수에 올수 있는 것들은 첫번째 를 제외한 총 두가지 중 하나 입니다. 세번째 자리수에 올수 있는 것들은 첫번째 두번째를 제외한 총 한가지 입니다. 3 * 2 * 1 = 6 경우의 수를 구하는 대표적인 방법은 backtracking 입니다. 해당 Tree 를 코드로 구현해보면 다음과 같습니다. fun solution(nums: IntArray): Unit { val endpoint = nums.size val result =..
AWS lambda 와 media convert 를 사용하여 HLS 변환하기
AWS lambda 와 media convert 를 사용하여 HLS 변환하기
2022.11.01Architecture S3 에 파일이 업로드 되면 Lambda 가 Event 를 Trigger 한다. Event 를 trigger 한 Lambda 가 Media convert 로 job 을 생성하여 submmit 한다. Media convert 의 submmit 된 작업의 상태 변경 감지를 할수 있는 Event bridge 를 생성한다. Event bridge 가 Complete 된 상태를 다른 Endpoint 에 Noti 한다. 대략적인 구조는 다음과 같습니다 HLS 란 무엇인가? https://d2.naver.com/helloworld/7122 https://velog.io/@corner3499/%EB%8F%99%EC%98%81%EC%83%81-HLS%EB%9E%80-%ED%8A%B9%EC%A7%9..
Kotlin 으로 Spring batch 시작하기 Part.1
Kotlin 으로 Spring batch 시작하기 Part.1
2022.10.29Java 로 된 Spring Batch 는 예제는 많지만 Kotlin 으로 된 예제는 부족한 것 같아 실전 프로젝트 처럼 예제를 작성 하기로 했습니다. 모든 code 는 아래 github 에서 확인해주세요 https://github.com/nothingprogram/spring-batch-practice GitHub - nothingprogram/spring-batch-practice Contribute to nothingprogram/spring-batch-practice development by creating an account on GitHub. github.com Project setup 하기 build.gradle.kts import org.jetbrains.kotlin.gradle.task..