분류 전체보기17 [백준] 1655 가운데를 말해요 (python) - 중앙값 힙(Median Heap) 1️⃣ 문제 링크 https://www.acmicpc.net/problem/1655 2️⃣ 기억해야 했던 개념들 - 매번 median 값을 어떻게 빠르게 구할 수 있을까? (python 기준 0.6초)- 정렬을 매번 하면 O(N² log N)이므로 10⁵ 데이터면 시간초과. - 정렬을 하지 않고, 중앙값을 찾을 수 있는 방법을 생각 -> 중앙값 힙(Median Heap) 개념을 이용한다. 3️⃣ 풀이 과정두 그룹으로 나누기중앙값보다 작거나 같은 값 → 왼쪽 그룹 (MAX HEAP)중앙값보다 큰 값 → 오른쪽 그룹 (MIN HEAP)MAX_HEAP의 크기 = MIN_HEAP 크기 + 1 로 유지한다.들어오는 값이 현재 중앙값이 작거나 같으면 MAX HEAP에 넣고 아니면 MIN HEAP에 넣는다.만약 크.. 2025. 10. 29. [프로그래머스] 등산코스 정하기 (python) 1️⃣ 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/118669 2️⃣ 기억해야 했던 개념들 - 기본 다익스트라 개념- 다익스트라의 시작 정점은 여러 개일 수 있다. 3️⃣ 풀이 과정문제를 요약하면, 여러 개의 출입구 중 하나의 출입구에서 시작하여 여러 개의 산봉우리 중 하나의 산봉우리에 방문하고 다시 동일한 출입구로 내려올 때까지의 Intensity를 최소화해야 한다.이때, intensity는 출입구 -> 쉼터 -> 산봉우리를 이동할 때 휴식 없이 이동해야 하는 가장 긴 시간을 말한다. 1. 다익스트라를 써야하는 건 알겠는데.. 각 출입구마다 다 돌면서 다익스트라로 돌면 안 되나?안 된다. 정점의 개수는 최대 50,000개, 간선.. 2025. 10. 28. [CICD] 도커 이미지 경량화하기 (CICD 구축기 2탄) 현재 문제도커 이미지 사이즈가 점점 커지고 있다..! 서비스를 배포할 때 Amazon 에서 관리하는 이미지를 사용하고 있었다. 이미지 용량이 500MB를 넘어가면서, 무거운 이미지가 배포 속도를 느리게 만드는 건 아닐까? 하는 생각에 배포 과정을 개선해보기로 했다. 시도 과정흔히들 하는 실수중의 하나가 자바 런타임용 컨테이너를 만들때, 컴파일러가 포함된 JDK 환경을 사용한다는 것이다. 보통 자바 런타임은 JDK 없이 JRE 만 있어도 충분하다.출처: https://bcho.tistory.com/1356 [조대협의 블로그:티스토리] 1. 멀티 스테이지 빌드 도입 FROM gradle:8.9-jdk21-alpine AS build WORKDIR /app COPY . . RUN gradle build -x.. 2025. 10. 3. [프로그래머스] 도넛과 막대 그래프 (python) 1️⃣ 문제https://school.programmers.co.kr/learn/courses/30/lessons/2587112️⃣ 필요한 개념차수 기반 문제 판별하기입력 크기 크다 → 탐색 괜찮나?문제 설명이 구조적 정의(사이클, 끝점, 교차점) → 차수로 풀 수 있나?출력이 개수만 요구됨 → 구체 탐색 필요 없네?3️⃣ 풀이def solution(edges): answer = [] in_out_list = [[0,0] for _ in range(1000000+1)] if (len(edges) == 1): return 1, 1, 0, 0 for edge in edges: a,b = edge in_out_list[a][1] += 1 .. 2025. 9. 5. [프로그래머스] 숫자 문자열과 영단어 (python) 1️⃣ 문제https://school.programmers.co.kr/learn/courses/30/lessons/81301 2️⃣ 기억해야 했던 개념들a.isdigit() : digit인지 판단하는 거 까먹어서 함수로 구현함 (기억하기) 3️⃣ 풀이 과정제한 시간 10초 -> 한번만 N의 복잡도면 충분히 가능하겠다 생각 (단순 구현)순차적으로 문자열 파싱함 4️⃣ 코드def is_num(a):if (a == "0" or a == "1" or a == "2" or a == "3" or a =="4" or a == "5" or a == "6" or a == "7" or a == "8" or a == "9"):return Trueelse:return Falsedef solution(s):answer = "".. 2025. 9. 5. [CICD] 블루그린 배포로 변경하기 (spring + nginx + github action) 현재 상황 - 무중단 배포를 적용한 이유[CICD 과정]코드 머지 → github action 실행 → 재배포현재 구조에서는 재배포할 때 기존의 docker container를 제거하고 새로운 container를 실행하는 과정에서 잠깐의 서버 다운타임이 발생한다. 개발할 당시엔 길어야 5초 정도 서버가 다운되는 것이라 큰 상관이 없지 않을까 생각했지만, 실제 서비스 환경에서는 잠깐이라도 서버가 다운되면 프론트엔드 요청을 처리할 수 없는 문제가 발생한다.이를 방지하기 위해 무중단 배포(Zero Downtime Deployment)를 적용하여, 배포 중에도 트래픽이 끊기지 않고 지속적으로 서비스를 제공할 수 있도록 개선하였다. 어떻게 해결할 수 있나?1. 롤링 배포(Roling Deployment)롤링 배포.. 2025. 3. 13. 이전 1 2 3 다음