문제 출처
https://www.acmicpc.net/problem/10815
접근 방식 및 풀이
- 이분탐색의 기초문제
- 시간초과가 안걸리는게 목표!
- HashSet으로도 구현할 수 있지만 이분탐색을 활용해보자~
소스 코드
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
long[] arra = new long[a];
for (int i = 0; i <a ; i++) {
arra[i] =sc.nextLong();
}
int b = sc.nextInt();
long[] arrb = new long[b];
for (int i = 0; i <b ; i++) {
arrb[i] =sc.nextLong();
}
Arrays.sort(arra);
int ans =0;
StringBuilder sb = new StringBuilder();
for (int i = 0; i <b ; i++) {
int left = 0;
int right= a-1;
long val = arrb[i];
int mid =0;
// System.out.println("----- " + val);
while(left<=right){
mid =(left+right)/2;
// System.out.println("mid "+ mid + " arra[mid] " + arra[mid] + " val " + val);
if(arra[mid]>val){
right = mid-1;
ans = 0;
}else if(arra[mid]<val) {
left = mid+1;
ans = 0;
}else{
ans = 1;
break;
}
}
sb.append(ans+" ");
}
System.out.print(sb);
}
}
결과
'Competition > Baekjoon' 카테고리의 다른 글
[백준] 18016번 자바 숫자 카드2 (0) | 2020.03.31 |
---|---|
[백준] 11662번 자바 민호와 강호 (0) | 2020.03.29 |
[백준] 2805번 자바 나무자르기 (0) | 2020.03.29 |