알고리즘19 소프티어 5회 기출 - 업무 처리 난이도 - Lv3 사용 개념 - 구현, 자료구조( 다중 Queue) 풀이 시간 - 40분 ( 설계 25분, 구현 15분 ) 핵심 키워드 1. 말단 직원은 왼쪽, 오른쪽의 구분이 없이 하루에 하나씩 업무를 처리한다. 2. 중간직원과 부서장은 홀수 날에는 왼쪽 직원이 보낸 업무를, 짝수 날에는 오른쪽 직원이 보낸 업무를 처리한다. -> 말단 직원이 일을 올려보내고 하루가 지나야 상사들이 일을 시작할 수 있음. -> 부서는 완전 이진트리로 되어있기 때문에 트리를 구현하면 가능함. 3. 왼쪽, 오른쪽의 구분이 있기 때문에 Queue[][] 2차원 배열을 사용하여 각 사원들이 왼쪽업무, 오른쪽 업무를 가져갈 수 있게끔 하였음. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 .. 2024. 3. 21. 소프티어 5회 기출 - 성적 평가 난이도 - Lv3 사용 개념 - 구현, 자료구조(PriorityQueue) 풀이 시간 - 50분 ( 설계 10분, 구현 40분 ) 핵심 키워드 1. PriorityQueue를 사용함으로써 O(Nlogn) 방식으로 처리 (2차원배열은 O(N²)이라 시간복잡도 안됨) 2. Person 클래스를 생성하여 Score와 Index를 저장할 수 있는 타입을 생성하여 처리. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68.. 2024. 3. 20. [백준] 1715 - 카드 정렬하기 난이도 - G4 사용 개념 - 구현, 자료구조(PriorityQueue) 풀이 시간 - 20분 ( 설계 10분, 구현 10분 ) 핵심 키워드 * 1. 문제의 설명에 의하면 결국 가장 작은 값 2개를 꺼낸 후 덧셈을 진행하고, 다시 Prioirty Queue에 넣어야 한다. -> 배열로 진행하면 인덱스 처리가 복잡해진다. Priority Queue를 사용해서 풀라고 만든 문제같다. * 2. int의 범위로는 할 수 없다. long을 사용하여야 한다. ( 최악의 상황 ) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 import java.io.BufferedReader; import java.io.InputStreamReader; imp.. 2024. 3. 20. [백준] 17298 - 오큰수 난이도 - G4 사용 개념 - 구현, 자료구조(Stack) 풀이 시간 - 45분 ( 설계 25분, 구현 20분 ) 핵심 키워드 * 1. 시간제한이 1초지만, N 범위 최대가 1,000,000회라 O(n²)이면 시간초과 발생 -> O(Nlogn)으로 해결 가능 * 2. 스택을 사용하며 역순으로 진행한다. ( 맨 뒤의 index는 무조건 -1이기 때문 ) 2-1. 한 번 값을 얻어올 때 마다 스택의 맨 위와 비교하여 행동을 결정한다. 2-2. 만약 배열에 저장된 값이 스택의 맨 위보다 작다면, 스택에 저장된 값이 배열의 해당 index의 오큰수는 스택의 맨 위 값이 된다. 2-3. 만약 배열에 저장된 값이 스택의 맨 위보다 크다면, 스택을 하나씩 꺼내보며 더 큰 수를 발견하거나, 스택이 빌 때 까지 확인한다.. 2024. 3. 20. 이전 1 2 3 4 5 다음