개발 공부/코딩테스트 18

99클럽 코테 스터디 26일차 TIL - 정렬

문제백준 11004 [K번째 수]문제 링크:  https://www.acmicpc.net/problem/11004 해결 방법정렬을 사용한 접근배열 정렬: 먼저, 주어진 배열을 오름차순으로 정렬합니다.정렬을 통해 KKK-번째 수를 찾을 수 있습니다.KKK-번째 값 찾기: 정렬된 배열에서 K−1K-1K−1번째 인덱스를 반환합니다 import java.io.*;import java.util.*;class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenize..

99클럽 코테 스터디 25일차 TIL - 힙

문제프로그래머스 [더 맵게]문제 링크:  https://school.programmers.co.kr/learn/courses/30/lessons/42626문제 접근 방식최소 힙(PriorityQueue) 사용 이유가장 낮은 두 개의 값을 반복적으로 찾아야 하므로 최소 힙이 적합합니다.최소 힙을 사용하면 힙에서 최솟값을 poll로 꺼내고, 새 값을 add하는 작업이 O(log⁡N)O(\log N)O(logN)의 시간 복잡도로 이루어집니다.문제 해결 과정배열 scoville의 모든 원소를 최소 힙에 삽입합니다.힙의 최솟값이 KKK 이상이 될 때까지 아래 작업을 반복합니다:힙에서 가장 작은 두 값을 꺼냅니다.새로운 스코빌 지수를 계산해 힙에 추가합니다.섞은 횟수를 증가시킵니다.힙에 남은 원소가 하나인데도 KK..

99클럽 코테 스터디 24일차 TIL - 힙

문제백준 1417 [국회의원 선거]문제 링크:  https://www.acmicpc.net/problem/1417문제 접근 방식목표 정의기호 1번인 다솜이가 다른 모든 후보의 득표수를 초과해야 한다.이 목표를 달성하기 위해 최소한의 사람만 매수해야 한다.문제의 핵심다른 후보들 중 득표수가 가장 높은 사람부터 매수해야, 매수 효과를 극대화할 수 있다.매수를 할 때, 매수된 사람은 다솜이의 득표수에 추가되고, 매수된 후보의 득표수는 감소한다.이를 반복하며 다솜이의 득표수가 나머지 후보들의 득표수를 모두 초과하는 시점을 찾아야 한다.자료구조 선택매수 대상(득표수 높은 후보)을 효율적으로 선택하기 위해 **최대 힙(PriorityQueue with reverse order)**을 사용한다.peek를 사용하여 최..

99클럽 코테 스터디 19일차 TIL - 힙

문제백준 1927 [최소 힙]문제 링크:  https://www.acmicpc.net/problem/1927접근 방법문제 요구사항 분석최소 힙 자료구조를 사용하여 정수 값을 관리한다.0 입력 시 최소값 출력 및 제거, 그 외의 숫자는 힙에 추가한다.힙이 비어있는 상태에서 0이 입력되면 0을 출력한다.효율성 고려PriorityQueue를 사용하여 최소 힙을 구현한다.BufferedReader를 통해 효율적으로 입력받는다.각 연산을 입력받는 즉시 처리하며, 결과는 즉시 출력한다.코드의 주요 포인트PriorityQueue를 사용하여 최소 힙 구현queue.add(val) : 값을 힙에 추가한다.queue.poll() : 힙의 최솟값을 제거하며 반환한다.queue.isEmpty() : 힙이 비어 있는지 확인한다..

99클럽 코테 스터디 18일차 TIL - 스택/큐

문제백준 [식당 입구 대기 줄]문제 링크:  https://www.acmicpc.net/problem/26042 해결 방법대기열을 큐로 구현하여 학생들이 순서대로 줄을 서게 하고, 앞에서 식사를 시작할 때마다 맨 앞에 있는 학생을 제거각 명령 처리 후 큐의 길이를 확인하여, 대기하는 학생 수의 최대값을 갱신만약 같은 대기 수가 반복되면 맨 뒤의 학생 번호가 가장 작은 경우를 선택명령을 하나씩 순서대로 처리하며 큐에 학생을 추가하거나 제거코드import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new ..

99클럽 코테 스터디 17일차 TIL - 스택/큐

문제백준 25497 [기술 연계마스터 임스]문제 링크:  https://www.acmicpc.net/problem/25497문제 접근 방법각 숫자 기술은 연계가 필요하지 않으므로 항상 count를 증가연계 기술인 'L-R', 'S-K'는 사전 기술이 확보되었을 때만 발동하도록 사전 기술 없이 본 기술을 사용하면 이후 기술들도 발동할 수 없으므로 즉시 반복문을 탈출코드import java.io.*;public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter b..

99클럽 코테 스터디 16일차 TIL - 스택/큐

문제백준 2161 [카드1]문제 링크:  https://www.acmicpc.net/problem/2161 해결 방법루프에서 카드가 한 장 남을 때까지 버리기와 이동 작업을 반복문자열에 모든 버린 카드를 추가하고, 마지막에 남은 카드도 result에 추가하여 출력 형식코드import java.util.LinkedList;import java.util.Queue;import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); // 카드의 개수 입력받기 Queue queue..

99클럽 코테 스터디 15일차 TIL - 스택/큐

문제프로그래머스 [같은 숫자는 싫어]문제 링크:  https://school.programmers.co.kr/learn/courses/30/lessons/12906 해결 방법비교를 위한 초기값과 임시 list를 ArrayList로 생성arr배열의 요소를 for문을 돌면서 현재 값이 previous와 다를 때만 리스트에 추가previous는 새로운 값이 추가될 때마다 업데이트list에 있는 값을 int[] 배열로 변환 코드import java.util.*;public class Solution { public int[] solution(int[] arr) { List list = new ArrayList(); int previous = -1; // 초기값으로 배열에 포함되지..

99클럽 코테 스터디 12일차 TIL - 스택

문제백준 10828 [스택]문제 링크:  https://www.acmicpc.net/problem/10828 해결 방법push, pop 메소드를 제공하는 Deque 사용switch-case문을 사용하여 스택 명령어 처리push X: 스택에 값을 추가pop: 스택에서 최상위 값을 제거하고 출력 / 스택이 비어있으면 -1을 출력size: 스택의 크기를 출력empty: 스택이 비어있는지 여부를 1(비어있음) 또는 0(비어있지 않음)으로 출력top: 스택의 최상위 값을 출력 / 스택이 비어있으면 -1을 출력코드import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayDe..

99클럽 코테 스터디 11일차 TIL - 해시

문제프로그래머스 [완주하지 못한 선수]문제 링크:  https://school.programmers.co.kr/learn/courses/30/lessons/42576해결 방법Arrays.sort를 통해 두 배열을 정렬이름이 순서대로 정렬되므로 같은 이름이 같은 위치에 놓이게 됩니다.for 문을 사용하여 참가자 배열과 완주자 배열을 하나씩 비교하고 비교 중 다른 이름이 그 이름을 반환만약 completion 배열과 모두 일치한다면, participant 배열의 마지막 사람을 반환코드import java.util.Arrays;class Solution { public String solution(String[] participant, String[] completion) { // 1. 참가..