C++ : https://1nnovator.tistory.com/35
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
|
package java_algorithm;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Beakjoon_1920 {
public static void main(String[] args) throws Exception {
BufferedReader in = new BufferedReader(new InputStreamReader (System.in));
int n = Integer.parseInt(in.readLine());
int[] arr = new int[n];
String arrStr = in.readLine();
StringTokenizer st = new StringTokenizer(arrStr);
int count = st.countTokens();
for(int i=0; i<count; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(arr);
int m = Integer.parseInt(in.readLine());
arrStr = in.readLine();
st = new StringTokenizer(arrStr);
count = st.countTokens();
for(int i=0; i<count; i++) {
int index = Arrays.binarySearch(arr, Integer.parseInt(st.nextToken()));
if(index < 0)
System.out.println("0");
else
System.out.println("1");
}
}
}
|
cs |
1. Scanner 대신 BufferedReader를 사용하였다. 성능 차이가 있다고하니, 익숙해져야겠다.
*성능 및 기본 사용법 참고 (링크)
2. 입력받은 숫자들을 나누기 위해 StringTokenizer를 사용하였다. 왠지 저렇게 하지않고 더 간결하고 똑똑하게 짜는 방법이 있을 것 같은데, 일단 단순무식하게 했다.
3. 자바로 이진탐색은 따로 구현하지 않고, binarySearch 라는 내장함수를 사용하였다. 자바 API로 구현되어있는 binarySearch는 찾는 값이 있으면 해당 index를 반환하고, 없으면 음수를 반환한다. 그런데 이 반환되는 음수에도 특정한 규칙이 있다고 한다.
*자바에서의 BinarySearch 사용 참고 (링크)
'프로그래밍 > 알고리즘' 카테고리의 다른 글
백준 알고리즘 1110번 : 더하기 사이클 (C++, JAVA) (0) | 2019.10.21 |
---|---|
백준 알고리즘 1009번 : 분산처리 (C++, JAVA) (0) | 2019.10.21 |
백준 알고리즘 1920번 : 수 찾기 (C++) (0) | 2019.10.21 |
백준 알고리즘 1037번 : 약수 (JAVA) (0) | 2019.10.19 |
백준 알고리즘 1032번 : 명령 프롬프트 (JAVA) (0) | 2019.10.19 |