Q : 3일차 하다가 갑자기 n일차 한 이유

A : 대부분이 아는 팁이여서 하루마다 적기엔 넘 귀찮아서 그냥 통짜로 정리해야 겠다는 생각이 들었다.

 

 

- 다량의 System.out.println 을 부를때 시간 줄이기.

www.acmicpc.net/problem/2568

 

2568번: 전깃줄 - 2

첫째 줄에는 두 전봇대 사이의 전깃줄의 개수가 주어진다. 전깃줄의 개수는 100,000 이하의 자연수이다. 둘째 줄부터 한 줄에 하나씩 전깃줄이 A전봇대와 연결되는 위치의 번호와 B전봇대와 연결

www.acmicpc.net

이 문제를 풀다가 sysout을 많이 출력하면 시간이 고자가 된다는 것을 알았다.

 

1. BufferedWriter 쓰기.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.util.*;
import java.io.*;
import java.math.*;
 
public class test {
 
    static int n;
 
    public static void main(String[] args) throws IOException {
        //System.setIn(new FileInputStream("input.txt"));
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
       
         
           bw.write("HELLO!!! \n");
        bw.write("ABCDE");
        bw.close(); //무적권 붙여야 한다.
        
         
}
cs

2. StringBuilder 사용하기.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import java.util.*;
import java.io.*;
import java.math.*;
 
public class Main {
 
    static int n;
 
    public static void main(String[] args) throws IOException {
        //System.setIn(new FileInputStream("input.txt"));
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
       
     
        StringBuilder sb = new StringBuilder();
        sb.append("ASDASDASD\n");
        sb.append("!!!");
        System.out.println(sb.toString());
   }
}
cs

 

 

 

- 정렬에 람다 사용하기.

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
import java.util.*;
 
public class test_210401 {
    public static void main(String[] args) {
        Integer[] arr = {4,2,5,1,2,6,2,1,8,1}; // 이거 기준이다.
 
 
        //제일 디폴트한 정렬법 밑에들도 다 똑같이 오름차순을 기준으로 설명한다.
        Arrays.sort(arr, new Comparator<Integer>() {
 
            public int compare(Integer o1, Integer o2) {
                if(o1 > o2)
                    return 1;
                else if(o1 < o2)
                    return -1;
                else
                    return 0;
            }
            
        });
        System.out.println(Arrays.toString(arr));
 
 
 
 
 
        //람다를 사용한 정렬법
        Arrays.sort(arr, (a,b)-> {  
            if(o1 > o2)        
                return 1;
            else if(o1 < o2)
                return -1;
            else
                return 0;            
            }
        });
        System.out.println(Arrays.toString(arr));
        
 
        //람다 + 라이브러리를 사용한 정렬법
        Arrays.sort(arr, (a,b)-> {Integer.compare(a,b});
        System.out.println(Arrays.toString(arr));
        
        
        //comparable은 set,priority_queue 같은거 정렬할때 쓰자.
 
    }
    
}
cs

 

 

- Priority_Queue 정렬 다루기

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
import java.util.*;
import java.io.*;
import java.math.*;
 
public class test {
 
    static int n;
 
    public static void main(String[] args) throws IOException {
        //System.setIn(new FileInputStream("input.txt"));
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
       
     
        // Point는 x,y로 이루어져있는데 y를 기준으로 오름차순을 하는 pq 만들것이다.
        PriorityQueue<Point> pq = new PriorityQueue<>();
        pq.add(new Point(0,1));
        pq.add(new Point(1,2));
        pq.add(new Point(4,0));
        pq.add(new Point(4,9));
        pq.add(new Point(2,4));
        
        
        //System.out.println(pq.toString());
        
        while(!pq.isEmpty()) {
            Point p = pq.poll();
            System.out.println(p.toString());
        }
        
        
   }
    static class Point implements Comparable<Point> {
        int x,y;
        
        Point(int x, int y) {
            this.x = x;
            this.y = y;
        }
        public String toString() {   // Arrays.toString()을 사용하기 위한 override
                return x + "," + y;
        }
        @Override
        public int compareTo(Point p) {
            return Integer.compare(this.x, p.x);
        }
        // Comparator의 (a,b) == Comparable의 (this, a);
    }
}
 
cs

 

 

- 다각형의 내부, 외부 판별

 

반직선을 그어서 교점이 홀수개면 내부, 짝수개면 외부이다.

+ Recent posts