김민쏭
REPOSITORY
김민쏭
전체 방문자
오늘
어제
  • 분류 전체보기 (69)
    • 원앙둥지 (17)
      • 2022 홋카이도 (6)
      • 2024 후쿠오카 (3)
    • 프로그래밍 (51)
      • 정리노트 (11)
      • Spring (5)
      • Javascript (7)
      • Database (7)
      • 알고리즘 (11)
      • 좋은글_갈무리 (3)
      • 기타 (3)

인기 글

최근 글

최근 댓글

hELLO · Designed By 정상우.
김민쏭

REPOSITORY

프로그래밍/알고리즘

백준 알고리즘 1920번 : 수 찾기 (JAVA)

2019. 10. 21. 15:05

C++ : https://1nnovator.tistory.com/35

 

백준 알고리즘 1920번 : 수 찾기 (C++)

이번 알고리즘 문제는 이진 탐색을 배울 수 있었다. 문제를 처음보고 내가 입력했던 방식은 이중 for문을 통해 찾는 것이었는데, 출력 값이 동일했음에도 시간 제한에 걸려 통과하지 못했다. 그래서 이것저것 검..

1nnovator.tistory.com

 

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");
            
            
        }
    }
    
}
Colored by Color Scripter
cs

 

1. Scanner 대신 BufferedReader를 사용하였다. 성능 차이가 있다고하니, 익숙해져야겠다.

  *성능 및 기본 사용법 참고 (링크)

 

2. 입력받은 숫자들을 나누기 위해 StringTokenizer를 사용하였다. 왠지 저렇게 하지않고 더 간결하고 똑똑하게 짜는 방법이 있을 것 같은데, 일단 단순무식하게 했다.

 

3. 자바로 이진탐색은 따로 구현하지 않고, binarySearch 라는 내장함수를 사용하였다. 자바 API로 구현되어있는 binarySearch는 찾는 값이 있으면 해당 index를 반환하고, 없으면 음수를 반환한다. 그런데 이 반환되는 음수에도 특정한 규칙이 있다고 한다.

  *자바에서의 BinarySearch 사용 참고 (링크)

저작자표시 (새창열림)

'프로그래밍 > 알고리즘' 카테고리의 다른 글

백준 알고리즘 1110번 : 더하기 사이클 (C++, JAVA)  (1) 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
    '프로그래밍/알고리즘' 카테고리의 다른 글
    • 백준 알고리즘 1110번 : 더하기 사이클 (C++, JAVA)
    • 백준 알고리즘 1009번 : 분산처리 (C++, JAVA)
    • 백준 알고리즘 1920번 : 수 찾기 (C++)
    • 백준 알고리즘 1037번 : 약수 (JAVA)
    김민쏭
    김민쏭
    예예,,,저장소임더,,,

    티스토리툴바