[Java] 수업 정리
[Java n일차] sysout 시간줄이기, 람다, PQ, 다각형 내외부 판별 등
헐랭미
2021. 4. 9. 07:42
Q : 3일차 하다가 갑자기 n일차 한 이유
A : 대부분이 아는 팁이여서 하루마다 적기엔 넘 귀찮아서 그냥 통짜로 정리해야 겠다는 생각이 들었다.
- 다량의 System.out.println 을 부를때 시간 줄이기.
이 문제를 풀다가 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 |
- 다각형의 내부, 외부 판별
반직선을 그어서 교점이 홀수개면 내부, 짝수개면 외부이다.