반응형

분류 전체보기 106

99클럽 코테 스터디 8일차 TIL, 완전탐색(소수 찾기)

1. 문제 정의2. 문제 접근dfs를 통해 만들어질 수 있는 숫자를 모두 구해 소수인지 판별해주면 될 것 같다.3. 문제 풀이dfs를 통해 만들어질 수 있는 경우의 수를 모두 구한다.isPrim 함수를 통해 소수인지 판별한다.4. 코드import java.util.*;class Solution { static List list = new ArrayList(); static boolean[] check = new boolean[7]; public int solution(String numbers) { int answer = 0; for (int i = 0; i 5. 회고처음에 dfs로 어떻게 모든 경우의 수를 구하는지가 어려웠다. 소수를 판별하는 알고리즘은 ..

99클럽 코테 스터디 7일차 TIL, 완전탐색(카펫)

1. 문제 정의 2. 문제 접근 구현 문제인듯 하다.3. 문제 풀이문제에 규칙을 찾는다.규칙에 맞는 정답을 리턴한다.4. 코드class Solution { public int[] solution(int brown, int yellow) { int[] answer = {}; // 1. (w,h) = (brown) + (yellow) 의 약수 // 2. 가로 >= 3, 세로 >= 3 // 3. 검증: (가로-2) * (세로-2) = yellow 갯수 int sum = brown + yellow; for(int i = 3; i = 3){ int w = Mat..

99클럽 코테 스터디 6일차 TIL, 정렬(H-Index)

1. 문제 정의 2. 문제 접근정렬을 하면 될 것 같다.3. 문제 풀이int 배열을 오름차순으로 정렬해준다.배열을 순회하면서 최고 많이 인용된 논문부터 차례대로 순위가 안 넘는지 확인해 준다.정답을 리턴한다.4. 코드import java.util.*;class Solution { public int solution(int[] citations) { Arrays.sort(citations); int n = citations.length; int idx = 0; for(int i = n-1; i >=0; i--){ if(idx 5. 회고예전에 한번 풀었던 문제라서 기억이 났다. 내림차순으로 해서 처음부터 순회해서 문..

99클럽 코테 스터디 5일차 TIL, 정렬(가장 큰 수)

1. 문제 정의2. 문제 접근정렬을 하면 될 것 같다.3. 문제 풀이int 배열을 String 배열로 바꾼다.Comparator을 상속받아 정렬을 해준다.정답을 리턴한다.4. 코드import java.util.*;class Solution { public String solution(int[] numbers) { StringBuilder sb = new StringBuilder(); String[] strs = new String[numbers.length]; for(int i = 0; i (o2+o1).compareTo(o1+o2)); for(int i = 0; i 5. 회고정렬을 쓰면 쉽게 풀 수 있는 문제였..

99클럽 코테 스터디 4일차 TIL, Heap(Smallest Number in Infinite Set)

1. 문제 정의 2. 문제 접근PriorityQueue를 써서 마지막 인덱스를 기억했다가 계속해서 활용해주면 될 것 같다.3. 문제 풀이PriorityQueue 를 이용하여 마지막 인덱스를 기억한다.조건에 맞으면 숫자를 넣어준다.pop을 할때 pq가 비었으면 마지막인덱스를 리턴하고, 아니면 pq의 내용을 pop해준다.4. 코드class SmallestInfiniteSet { PriorityQueue pq; int lowerIdx = 1; public SmallestInfiniteSet() { pq = new PriorityQueue(); } public int popSmallest() { if(!pq.isEmpty(..

99클럽 코테 스터디 3일차 TIL, Heap(더 맵게)

1. 문제 정의2. 문제 접근스코빌을 더해줄때 마다 더해준 스코빌이 그 값의 정렬에 따라 자동으로 들어가야 하므로 PriorityQueue를 쓰는것이 편할 것 같다.3. 문제 풀이PriorityQueue 를 이용하여 첫번째 스코빌과 두번째 스코빌을 빼내어 계산하여 다시 pq에 넣어준다.넣어줄때 마다 최소 스코빌 값을 갱신해준다.마지막에 반복된 횟수를 리턴해준다.4. 코드import java.util.*;class Solution { public int solution(int[] scoville, int K) { PriorityQueue pq = new PriorityQueue(); int ans = 0; for (int s : scoville)..

Mysql 기반 선착순 쿠폰 발급 기능 개발 (5)

동시성 이슈를 해결하기 위해 다음과 같은 방식으로 순차적으로 적용해보겠다.synchronizedredis lockmysql lock각 방식을 적용함으로써 장단점도 같이 알아보겠다. 동시성 이슈 해결 - synchronized 들어가기 앞서 synchronized 가 무엇인지 알아보자.스레드 동기화란?스레드 동기화는 멀티스레드 환경에서 여러 스레드가 하나의 공유자원에 동시에 접근하지 못하도록 막는것을 말한다.공유데이터가 사용 되어 동기화가 필요한 부분을 임계영역(critical section)이라고 부르며, 자바에서는 이 임계영역에 synchronized 키워드를 사용하여 여러 스레드가 동시에 접근하는 것을 금지함으로써 동기화를 할 수 있다.  synchronized 사용 방법1) 메소드에 synchron..

99클럽 코테 스터디 2일차 TIL, Stack(올바른 괄호)

1. 문제 정의2. 문제 접근Stack을 사용하여 풀면 될 것 같다.3. 문제 풀이Stack을 이용하여 "("일때는 넣고, ")" 일때는 Stack에 값이 들어가 있는지 확인 후 처리4. 코드import java.util.*;class Solution { boolean solution(String s) { Stack stack = new Stack(); for(char ch:s.toCharArray()){ if(ch == '('){ stack.add(ch); } else { if(stack.isEmpty()){ return false; ..

99클럽 코테 스터디 1일차 TIL, Queue(기능개발)

1. 문제 정의 2. 문제 접근순차적으로 배포를 해야하고, 앞에 배포가 안되면 뒤에 배포도 기다려야 하니 Queue를 사용하면 될 것 같다.3. 문제 풀이Queue에 배포 시간을 순차적으로 적재배포될때마다 그 뒤에 배포가 이미 완료면 같이 처리정답 출력4. 코드import java.util.*;class Solution { public int[] solution(int[] progresses, int[] speeds) { int[] answer; List list = new ArrayList(); Queue q = new LinkedList(); for(int i = 0; i  5. 회고Queue를 활용하여 간단하게 해결할 수 있는 문..

Mysql 기반 선착순 쿠폰 발급 기능 개발 (4)

성능테스트에 앞서 미리 알고 있으면 좋은 것들에 대해서 설명하겠다. 성능 테스트에서 서비스가 빠른지 느린지에 대한 기준은 다음과 같이 크게 2가지로 판단할 수 있다.ThroughputLatency Throughput Throughput이란 시간당 처리량을 의미한다.TPS(Transaction Per Second), RPS(Request Per Second) 등으로도 불리며, '1초에 처리하는 단위 작업의 수' 혹은 '1초에 처리하는 HTTP 요청 수' 등으로 해석할 수 있다. 즉, 1초에 최대한 많은 작업을 처리할 수 있는 서비스가 성능 측면에서 좋은 서비스라고 볼 수 있다. 예를 들어, A 서비스는 1초에 1000개의 작업을 처리하고, B 서비스는 1초에 2000개의 작업을 처리할 수 있는 능력을 가졌..

반응형