🔗 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/77486 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📝 풀이 맨 밑단에서부터 수익금을 위쪽으로 분배해주는 방식으로 문제를 풀어야 한다. sam의 수익금중 10%를 edward로 올리고 다시 edward에서 해당 수익금을 mary로 올리고 마지막으로 mary에서 center로 올린다. 1. 우선 수익금을 저장하는 memberProfit과 누구로부터 추천을 받았는지 즉, 부모 노드를 저장하는 memberRecommender를 만든다. m..
🔗 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/131127 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📝 풀이 이 문제는 Dictionary와 Set을 활용해서 풀었다. 또한 Sliding window 개념을 이용해 window의 크기를 10으로 지정하여 새로 들어오는 원소와 나가는 원소에 주목하여 풀었다. 먼저 사야하는 과일을 dictionary에 저장했다. 또한 나중에 반복문을 이용해 원하는 품목들을 전부 샀는지 확인하기위해 Set도 구했다. Dictionary를 이용해 반복문..
🔗 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/92335 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📝 풀이 이 문제는 개별적으로 구현해야할 것들이 많았다. 1. 주어진 수 n을 k진수로 바꾸기 2. 소수 판별하기 3. 조건에 맞는 개수 찾기 주어진 수 n을 k진수로 바꾸기 def getDigit(n, k): digit = 0 num = 1 while n >= num: num *= k digit+=1 return digit 소수 판별하기 처음에는 아래와 같이 에라토스테네스의 체를 ..
사용 배경 프로젝트를 진행하면서 스프링 스케줄러를 사용해 주기적으로 이용자들에게 이메일을 보내는 기능을 구현했었다. Scale Out 시, 서버의 수만큼 해당 job이 반복되는 이슈가 발생했다. 해당 이슈를 해결하기 위해 ShedLock을 사용했다. ShedLock 같은 잡을 수행하는 각각 다른 서버에서의 인스턴스 A,B가 있을 때 A, B 둘 중 하나가 수행하도록, 2개 이상의 서버에서 중복 수행을 방지하도록 Lock을 걸게하는 라이브러리 1. 테이블 생성 아래와 같이 lock을 저장하기위한 테이블을 만들어준다. CREATE TABLE shedlock ( name VARCHAR(64), lock_until TIMESTAMP(3) NULL, locked_at TIMESTAMP(3) NULL, locked..