분류 전체보기 110

[boj 2164.python] '카드2' 풀이 (시간초과 해결)

https://www.acmicpc.net/problem/2164접근 방식처음에 문제 읽자 마자, 쉬운 구현 문제라고 생각하고 냅다 단순 리스트로 풀어버렸다. 1차 코드 (리스트 사용) 👉 실패 ❌N = int(input())# 카드 리스트 생성card = [i + 1 for i in range(N)]# 카드 섞기def card_mix(): while len(card) > 1: # 카드가 한 장 남을 때까지 반복 # 제일 위에 있는 카드 바닥에 버림 card.pop(0) # 그 다음 위에 있는 카드는 제일 아래에 있는 카드 밑으로 옮김 card.append(card[0]) card.pop(0) print(card[0])card..

Algorithm/BaekJoon 2024.12.18

[Python] zip과 dict로 리스트 2개 딕셔너리로 매핑하기 (feat. for문 탈출)

들어가며파이썬의 swapcase 메서드에 이어.. 알고리즘 문제를 풀다 얼떨결에 알게 된 zip 메서드, 이건 모두 알아야해!!!!!! 마음으로 포스팅해보려고 한다.솔직히 이거 찾고 이굥진 인생 한정 2024 올해의 발견상 주고 싶었다. 예제여기 같은 길이의 리스트 2개가 있다고 가정해보자. 이 리스트는 4명의 이름에 대한 리스트와, 그 이름에 맞는 점수 리스트다. name = ["karina", "winter", "ningning", "zizel"]score = [5, 10, 1, 3] 이 두 리스트를, 한 개의 딕셔너리로 매핑하려고 한다.평소의 나는 for문으로 매핑하는 방법을 선택해서이렇게 하거나,혹은이렇게 했을 것. 이런 약 3줄의 코드를 zip, dict 메서드를 쓰면 단 한 줄로 줄일 수 있다..

[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/2)

필자는 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