728x90
인프런의 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의를 수강하며 강의 수강 후 복습 풀이 코드를 정리하고 있습니다.
- 문제 링크 : https://cote.inflearn.com/contest/10/problem/06-08
- 문제 설명 : n개의 수와 그 중 하나인 m이 주어지고, n개의 수를 오름차순으로 정렬했을 때 m은 몇 번째에 위치하는지 이분 검색(이진 탐색, Binary Search)을 이용해 구하는 문제
- 이진 탐색이란?
풀이
- 이분 검색(이진 탐색, Binary Search)를 사용하여 풀이
package inflearn.sorting_searching;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
//이분 검색
public class Main6_8 {
public static int solution(int n, int m, int[] arr) {
Arrays.sort(arr);
int left = 0;
int right = n-1;
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] == m)
return mid+1;
else if (arr[mid] > m)
right = mid-1;
else
left = mid + 1;
}
return -1;
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
int[] arr = new int[n];
st = new StringTokenizer(br.readLine());
for (int i = 0; st.hasMoreTokens(); i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
System.out.println(solution(n, m, arr));
br.close();
}
}
'알고리즘 문제풀이 > 인프런' 카테고리의 다른 글
[알고리즘] 7-2 재귀함수를 이용한 이진수 출력 (인프런 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의) (1) | 2021.06.13 |
---|---|
[알고리즘] 7-1 재귀함수 (인프런 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의) (0) | 2021.06.13 |
[알고리즘] 6-9 뮤직비디오 - 결정 알고리즘, 이진 탐색(인프런 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의) (0) | 2021.06.12 |
[알고리즘] 6-7 좌표 정렬(인프런 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의) (0) | 2021.06.09 |
[알고리즘] 6-5 중복 확인(인프런 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의) (0) | 2021.06.08 |
댓글