
문제설명

입력 & 출력

나의 풀이

이번 문제는 N개의 배열에서 M배열의 요소가 존재하는지 판단하는 문제입니다.
문자열에서 숫자를 찾는 방식을 사용할 수도 있지만, 문자열에서 숫자를 찾는 방식은 비효율적입니다. 따라서 이진 탐색을 사용하면 시간 복잡도를 크게 줄일 수 있습니다.

main문에서는 먼저 빠른 입력과 출력을 위해서 Buffer클래스를 사용하여 입력과 출력을 받아줍니다.
StringTokenizer를 사용하여 공백을 구분하고 배열에 저장해 주고, 이진탐색에서 선행되어야 하는 정렬을 수행해줍니다.
그리고 이진 탐색함수로 받은 결과를 StringBuilder를 사용하여 결과를 추가해 줍니다.

이진탐색을 수행할 binarySearch 함수에서는 이진 탐색의 동작 방식인 시작점 left와 끝점 right을 지정해 주고, 두 점이 교차하지 않을 때까지 반복을 해줍니다.
그러면 while문에서는 계속해서 값을 비교하고 절반을 줄여감으로써 빠른 검색을 할 수 있습니다.
주석을 자세히 달아놔서 따로 설명은 안 하지만 자세한 동작 방식은 아래의 포스팅에서 확인하 실 수 있습니다.
참고❗️
[JAVA] 입출력, BufferedReader, StringTokenizer, StringBuilder 알아보기
Java로 코딩테스트를 보거나 입력을 사용해야 할 때 Scanner 클래스를 사용하면 편리하지만 속도가 느리다는 단점이 있습니다. 그렇기 때문에 속도가 빠른 BufferReader 클래스를 사용을 하면 시간복
pixx.tistory.com
[Algorithm] 이진 탐색 알고리즘 : 데이터 정렬과 검색 최적화 (Binary Search, Java)
자바를 활용하다 보면 데이터 집합에서 특정 값을 빠르게 찾아야 할 때가 있습니다. 예를 들어, 정렬된 배열이나 리스트에서 원하는 값을 효율적으로 검색해야 하는 경우가 그렇습니다. 이러
pixx.tistory.com
'Coding Test > 백준' 카테고리의 다른 글
[백준] 영화감독 숌 (브루트 포스, contains, 1436번, Java) (1) | 2024.07.14 |
---|---|
[백준] 2 x n 타일링 (동적 계획법, DP, 11726번, Java) (0) | 2024.07.13 |
[백준] 미로 탐색 (BFS, Queue, BufferedReader, 2178번, Java) (0) | 2024.07.09 |
[백준] 피보나치 함수 (DP, 동적 계획법, 1003번, Java) (0) | 2024.07.08 |
[백준] DFS와BFS (1260번, Java) (1) | 2024.07.05 |

문제설명

입력 & 출력

나의 풀이

이번 문제는 N개의 배열에서 M배열의 요소가 존재하는지 판단하는 문제입니다.
문자열에서 숫자를 찾는 방식을 사용할 수도 있지만, 문자열에서 숫자를 찾는 방식은 비효율적입니다. 따라서 이진 탐색을 사용하면 시간 복잡도를 크게 줄일 수 있습니다.

main문에서는 먼저 빠른 입력과 출력을 위해서 Buffer클래스를 사용하여 입력과 출력을 받아줍니다.
StringTokenizer를 사용하여 공백을 구분하고 배열에 저장해 주고, 이진탐색에서 선행되어야 하는 정렬을 수행해줍니다.
그리고 이진 탐색함수로 받은 결과를 StringBuilder를 사용하여 결과를 추가해 줍니다.

이진탐색을 수행할 binarySearch 함수에서는 이진 탐색의 동작 방식인 시작점 left와 끝점 right을 지정해 주고, 두 점이 교차하지 않을 때까지 반복을 해줍니다.
그러면 while문에서는 계속해서 값을 비교하고 절반을 줄여감으로써 빠른 검색을 할 수 있습니다.
주석을 자세히 달아놔서 따로 설명은 안 하지만 자세한 동작 방식은 아래의 포스팅에서 확인하 실 수 있습니다.
참고❗️
[JAVA] 입출력, BufferedReader, StringTokenizer, StringBuilder 알아보기
Java로 코딩테스트를 보거나 입력을 사용해야 할 때 Scanner 클래스를 사용하면 편리하지만 속도가 느리다는 단점이 있습니다. 그렇기 때문에 속도가 빠른 BufferReader 클래스를 사용을 하면 시간복
pixx.tistory.com
[Algorithm] 이진 탐색 알고리즘 : 데이터 정렬과 검색 최적화 (Binary Search, Java)
자바를 활용하다 보면 데이터 집합에서 특정 값을 빠르게 찾아야 할 때가 있습니다. 예를 들어, 정렬된 배열이나 리스트에서 원하는 값을 효율적으로 검색해야 하는 경우가 그렇습니다. 이러
pixx.tistory.com
'Coding Test > 백준' 카테고리의 다른 글
[백준] 영화감독 숌 (브루트 포스, contains, 1436번, Java) (1) | 2024.07.14 |
---|---|
[백준] 2 x n 타일링 (동적 계획법, DP, 11726번, Java) (0) | 2024.07.13 |
[백준] 미로 탐색 (BFS, Queue, BufferedReader, 2178번, Java) (0) | 2024.07.09 |
[백준] 피보나치 함수 (DP, 동적 계획법, 1003번, Java) (0) | 2024.07.08 |
[백준] DFS와BFS (1260번, Java) (1) | 2024.07.05 |