분류 전체보기 101

[programmers lv.2 python] '석유 시추' 파이썬 풀이 (이제 시간초과를 곁들인 ..)

https://school.programmers.co.kr/learn/courses/30/lessons/250136 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제 제한 사항문제 접근 bfs를 통해 석유가 있는 땅인 land[i][j]가 1인 부분을 찾으면, 그 주변의 기름 양을 상하좌우로 탐색해 1로 이어져있는 칸의 개수를 전부 찾아 count에 저장하는 방법으로 접근해봤다. 1차 코드 👉 실패 ❌from collections import dequedef solution(land): n = len(land) m = len(land[0]) visited = [[False] * m f..

[프로젝트] Windows 환경에서 JMeter 설치 및 부하 테스트 하기

부하 테스트를 위해 JMeter 설치가 필요했던 나 ,, 윈도우에서 JMeter 설치를 비롯해 테스트를 해야 하는 분들이 이 포스팅 하나만 읽어도 쉽게 가능했으면 하는 마음으로 포스팅한다. 설치1. JMeter를 아래 링크에 가서 설치해주자.https://jmeter.apache.org/ Apache JMeter - Apache JMeter™Apache JMeter™ The Apache JMeter™ application is open source software, a 100% pure Java application designed to load test functional behavior and measure performance. It was originally designed for testing ..

[프로젝트] QueryDSL 사용 시 페이징 응답 JSON 데이터 최적화 하기

문제 상황spring 3.3.4 버전, QueryDSL로 검색 기능을 구현하다, API 테스트 과정에서 처음 보는 WARN 로그를 발견했다.2024-10-06T20:38:53.327+09:00 WARN 36852 --- [user-service] [io-19093-exec-1] ration$PageModule$WarningLoggingModifier : Serializing PageImpl instances as-is is not supported, meaning that there is no guarantee about the stability of the resulting JSON structure!For a stable JSON structure, please use Spring Data's Pa..

[프로젝트] Redis 분산락으로 재고 감소 동시성 이슈 해결하기 1 - 기술적 의사결정

필자는 MSA 기반 이커머스 프로젝트에서 상품/재고/예약구매 도메인을 맡아 진행중이다. 지난 프로젝트에서 쿠폰 도메인을 맡아 개발했을 때 Race condition 문제를 예상치 못하게 겪고 (..) 이번 프로젝트에서 상품/재고 도메인을 맡았을 땐 어느 정도 동시성 이슈가 생기리라고 예상을 했었다. 그래서 이번 포스팅에선 해당 이슈가 왜 발생하는지 원인을 분석하고, 문제를 해결하기 위한 방법과 그에 따른 기술적 의사결정 과정을 적어보려 한다.  문제 상황 바로 테스트 코드를 작성해보자.동시에 100개의 요청이 들어올 때의 테스트 코드를 작성하고 돌려보니 역시나 실패다.  실패하는 이유는 역시나 위에 언급해 둔 Race condition 문제 때문이다. 💡Race Condition 이란?두 개 이상의 스..

[boj 14888.python] '연산자 끼워넣기' 파이썬 풀이 (feat. 브루트포스, DFS 비교)

https://www.acmicpc.net/problem/14888문제 출력 문제 접근문제 난이도 자체는 어렵지 않은 문제였다.처음에는 브루트포스(완탐)와 DFS 사이에서 고민하다가, DFS로 구현하려면 각 연산자를 선택하는 과정을 재귀 호출로 구현해야 할 것 같았다. 아직 그 부분은 미흡해서 브루트포스로 풀 수 있을까? 하고 고민했는데 ,, 그래서 시간 복잡도를 계산해 봤다. N - 1개의 연산자에 대해 가능한 모든 순열을 생성해야 하니까, 경우의 수는 (N - 1)!과 같을거다. '입력'에서 N의 조건을 보면 N의 최대값은 11 이다. 즉, 최대 경우의 수는 10! = 3,628,800이라는 말 ! 그래서 이 문제의 경우는 브루트포스로도 충분히 풀 수 있을 거라고 판단해 브루트포스 방법을 채택해서 문..

Algorithm/BaekJoon 2024.12.03

[TIL][자료구조] 그래프의 개념과 표현 방법

DFS와 BFS를 학습하다가, 이 알고리즘들을 배우기 전에 이 알고리즘들의 근간을 이루고 있는 '그래프'라는 자료 구조에 대해 깊게 알아보고 가야겠다는 생각이 들었다. ✏️그래프란?그래프란, 연결되어 있는 정점과 정점간의 관계를 표현할 수 있는 자료구조이다. [천재학습백과] 알다시피 자료구조는 크게 비선형구조와 선형구조로 구분되는데,선형구조는 자료를 저장하고 꺼내는 것에 초점이 맞춰져 있고 (ex. 스택, 큐, 리스트, ...), 비선형구조는 '표현'에 초점이 맞춰져 있다고 생각하면 된다. 자료구조인 그래프는 바로 연결 관계에 초점이 맞춰져 있는데, 말로만 들으면 너무 추상적이게 느껴질 수 있으니 관계망을 나타내는 서비스인 페이스북으로 예시를 들어보자. 필자가 친구 "제니"를 알고 있고, "로제"와 친하..

Algorithm 2024.12.02

[프로젝트/기술적 의사결정] Kafka vs RabbitMQ, 대규모 트래픽 상황에 맞는 메세징 시스템 선택

요구 사항사용자들이 주문 api 요청을 할 때, 사용자 트래픽이 몰리는 상황에서도 안정적인 주문 처리가 필요했다. 주문이 완료되면 재고를 차감하는 기능이 필요했고, 이때 효율적으로 주문을 처리하고 트래픽을 관리하기 위해 메시징 시스템을 도입하기로 결정했다. 기술 선택지RabbitMQKafka 선택한 기술 및 근거두 가지 기술 선택지 중, 어떤 시스템이 더 적절한지 검토할 때 아래와 같은 상황을 고려했다.▪️트래픽 처리 능력 : 높은 동시 요청 상황에서의 안정성이 필요하다. ▪️메세지 전달 보장 : 주문이 실패 없이 처리되어야 하며, 중복 주문이나 데이터 손실을 방지해야 한다. ▪️재고 관리 : 주문이 완료되었을 때 재고를 정확히 차감해야 한다. 이제 각 기술 선택지를 비교해보면서 결론을 내려보자.  1...