2025/03/01 3

선착순, 재고 시스템 관리 인프런 정리

선착순 이벤트 시스템 관련해서 Ex) 100개의 쿠폰을 발급한다고 했을 때db로만 쿠폰 발급 로직을 조절할 경우 race condition 발생으로 인해 100개보다 더 많은 쿠폰이 발급될 수 있음 Redis 도입가장 떠올리기 쉬운 방법은 java의 synchronized 키워드를 사용해서 access를 동시에 하는 것을 막는 건데 사실 이 방법의 가장 큰 문제점은 여러 대의 서버를 띄울 경우 무용지물인 부분이다. (하나의 서버에 들어온 여러 개의 동시 접근을 막아주는 것이기 때문)  그렇다면 레디스 도입을 통해 문제를 해결하는데 레디스에는 incr라는 명령어가 있음1 증가시키면서 증가시킨 값을 가지고 온다. 가지고 온 값이 100이 넘었을 경우 쿠폰을 발급하지 않도록 한다. 카프카 도입레디스에 저장된 ..

공부공부 2025.03.01

[leetcode] 202. Happy Number

문제주어진 number는 각 자릿수의 제곱을 더한 값으로 할당되는데 number가 1이 되면 happy number끝나지않는 반복에 빠지면 happy number가 아니다. 풀이happy number를 구하는 건 쉽지만 happy number가 아닌 수를 구하는 건 끝나지않는 반복에 빠져있는지에 대한 별도의 체크가 필요하다.이 체크는 어떻게 해도 상관없지만 나는 map을 이용해서 구현했다.'2^31 - 1 크기의 boolean 배열'로 선언해서 이미 number였던 값이었는지를 체크해도 되는데, 반복되는 수만 체크해도 되기 때문에 불필요하게 배열 사이즈를 키울 필요는 없다고 판단했다. 하지만 배열을 쓰기에는 해당 number가 happy number인지 판단하는 과정에서 얼마나 많은 연산을 할 지는 알 ..

코딩테스트 2025.03.01

[leetcode] 168. Excel Sheet Column Title

문제171. Excel Sheet Column Number 와 풀이가 반대되는 문제이다. A -> 1B -> 2..Z -> 26AA -> 27.. 위와 같이 주어졌을 때, 입력 숫자와 상응하는 문자열을 반환한다. 풀이n이 자릿수이고, A를 A~Z에 해당하는 숫자(1~26)라고 했을 때, 26으로 나눠가며 나머지부터 알파벳으로 바꿔간다. 풀이 코드위의 풀이를 그대로 코드로 옮겨온 모습이다.class Solution { public String convertToTitle(int columnNumber) { StringBuilder sb = new StringBuilder(); while(columnNumber > 0) { columnNumber--; ..

코딩테스트 2025.03.01