
내 풀이>
import java.util.*; public class Main { public int solution(int n, int m, int[] arr) { int answer = 0; Arrays.sort(arr); for (int i = 0; i < n; i++) { if (arr[i] == m) { answer = i+1; } } return answer; } public static void main(String[] args) { Main T = new Main(); Scanner kb = new Scanner(System.in); int n = kb.nextInt(); int m = kb.nextInt(); int[] arr = new int[n]; for (int i = 0; i < n; i++) { arr[i] = kb.nextInt(); } System.out.println(T.solution(n, m, arr)); } }
다른풀이>
이분검색: 이분검색은 정렬이 되어있어야 함
lt, rt는 양끝으로 두고 mid = (lt+rt)/2
mid를 기준으로 mid보다 내가 찾고자 하는 값이 큰지 작은지 판단하여 찾아 나가는 것
import java.util.*; public class Main { public int solution(int n, int m, int[] arr) { int answer = 0; Arrays.sort(arr); int lt = 0, rt = n-1; while (lt <= rt) { int mid = (lt+rt)/2; if (arr[mid] == m) { answer = mid+1; break; } if (arr[mid] > m) rt = mid-1; else lt = mid+1; } return answer; } public static void main(String[] args) { Main T = new Main(); Scanner kb = new Scanner(System.in); int n = kb.nextInt(); int m = kb.nextInt(); int[] arr = new int[n]; for (int i = 0; i < n; i++) { arr[i] = kb.nextInt(); } System.out.println(T.solution(n, m, arr)); } }