분류 전체보기 396

080 : 조약돌 꺼내기

조약돌 갯수가 뽑는 갯수보다 클 때만 공간이 열리며 이 때 1.0은 곱하기 누적의 plate다 공간에 개폐 or 다른 location으로의 서술 double로 잡아줌 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { // ISC BufferedReader br =new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st..

019 : Quick sort / K번째 수 구하기

Klocated 자체는 말 그대로 void로서 TP[] 를 정렬하는 것이지, 특별히 k를 Return하지 않는다(OEC에서 정렬된 TP[k-1]에 액세스) TP[] connector, 시작과 끝 pointer, target k가 필요 그리고 해당 인자들로 quickSort 공급도 필요하다 if는 recursive bottom 또 Klocated는 하청을 주는 것 / 탐색 구간만 받아서 quickSort으로 넘겨줌 EP 최소 피스 작업 pivot을 s pointer와 바꾸어 setup 작업의 기본이 되는 비교를 위해 해당 value는 먼저 보관하고 swap한다 마지막에 다시 되돌려 놓을 것 quickSort는 정렬 후 pivot pointer를 전달 통상적인 Quick sort는 한번 정렬된 pivot의 ..

018 : ATM 인출 시간 / insertion sort

pointer 배정 찾기 두번째부터 시작해서 작은수를 왼쪽에 계속 모으는 것 lsq는 standard poll로 작용하고 left area에 삽입할 것을 찾는다 *하나라도 작은 걸 찾으면 작은것 - 큰것이 되게 오른쪽 것을 pointer로 잡고 break; 최대한 작은 것을 찾아 들어가는 것이 아닌, 점차 완성되는 그림으로 착각할 수 있지만 왼쪽 2의 구간부터 차례로 쌓여가므로 squeezer poll이 지나간 la에서는 오름차순으로 정렬되어 있다 lsq poll에서 삽입할 value를 이미 얻었으므로 지워버려도 된다 S와 TP의 capacity는 동일하다 1번 2번 .. 5번 1번째까지 합, 2번째까지합.. 5번째까지 합 import java.util.Scanner; public class Main {..

017 : selection sort / 내림차순

char에서 Int로 parsing 안됨 > substring으로 하기 lsq가 standard pointer가 된다 또 비교를 위한 pointer가 필요 max값이 갱신될때마다 바뀌면 안되고, 최종 max값을 찾은 후 j for문 밖에서 갱신해야 하므로 Pointer plate(max)를 준비, 갱신되면 받아서 나온다 import java.util.Scanner; public class Main { public static void main(String[] args) { // ISc Scanner sc = new Scanner(System.in); String line = sc.nextLine(); // D2F int[] TP = new int[line.length()]; for (int i = 0; ..

020 : merge sort // 수 정렬하기

flush와 close recursive bottom(최소 피스) 구간 나눠서 하청 주기 작성할 connector / pointer 확인 (TP connector와 pointer / cont connector와 pointer x 2 사용) LEFTOVER import java.io.*; public class Main { static int[] TP; static int[] cont; public static void main(String[] args) throws IOException { // ISC BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(n..

023 : DFS = connected component

하나의 DFS 세션에서 끝이나지 않는다면, (더 방문할 노드가 남아있다면) 해당 노드를 포함한 연결체와 떨어져있는 다른 연결체 방문이 필요하다 해당 EP가 왜 필요한가? import java.util.ArrayList; import java.util.Scanner; public class Main { static ArrayList[] TP; static boolean[] visited; public static void main(String[] args) { // ISC Scanner sc = new Scanner(System.in); int V = sc.nextInt(); int E = sc.nextInt(); // D2F TP = new ArrayList[V+1]; for (int i = 1; i

015 : 버블 정렬

오른쪽에서 조여오는 squeezer를 두는데, 우선 1~V를 다 돌아야 하므로, sq는 0부터 시작한다 그리고 일반 tp는 전체에서 sq만큼 뺀 경계선 느낌으로 할당하면 된다 모든 노드들이 한번에 정렬되지는 않지만, 제일 큰 노드는 있어야 할 곳으로 배치된다 (오른쪽으로 보낼만 하면 보내고 / 그것보다 더 큰게 있으면 가만히 놔둔다) 가만히 놔두면서 새로운 큰 것이 나타나면, 그것을 오른쪽으로 보낸다 import java.util.Scanner; public class Main { public static void main(String[] args) { // ISc Scanner sc = new Scanner(System.in); int V = sc.nextInt(); // D2F int[] TP = n..