https://www.acmicpc.net/problem/2776
2776번: 암기왕
연종이는 엄청난 기억력을 가지고 있다. 그래서 하루 동안 본 정수들을 모두 기억 할 수 있다. 하지만 이를 믿을 수 없는 동규는 그의 기억력을 시험해 보기로 한다. 동규는 연종을 따라 다니며,
www.acmicpc.net
저는 해당 문제를 이분탐색을 이용하여 문제를 해결하였습니다.
정렬 후 Arrays.binarySearch 를 활용하여 각각의 값이 존재하는지 확인하였습니다.
Arrays.binarySearch는 해당 값이 존재하면 해당하는 인덱스를 반환하고 없으면 들어가야하는 자리값의 음수 -1 를 반환합니다.
package BOJ.BinarySearch;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
import java.util.function.Function;
public class BOJ_2776 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine()," ");
Function<String,Integer> stoi = Integer::parseInt;
int test = stoi.apply(st.nextToken());
StringBuilder sb = new StringBuilder();
for(int t = 0 ; t < test ; t++){
st = new StringTokenizer(br.readLine()," ");
int n = stoi.apply(st.nextToken());
int[] input = new int[n];
st = new StringTokenizer(br.readLine()," ");
for(int i = 0 ; i < n ; i++){
input[i] = stoi.apply(st.nextToken());
}
Arrays.sort(input);
st = new StringTokenizer(br.readLine()," ");
int m = stoi.apply(st.nextToken());
st = new StringTokenizer(br.readLine()," ");
for(int i = 0 ; i < m ; i++){
int num = stoi.apply(st.nextToken());
int index = Arrays.binarySearch(input,num);
if(index >= 0){
// System.out.println(1);
sb.append(1+"\n");
}else{
// System.out.println(0);
sb.append(0+"\n");
}
}
}
System.out.println(sb.toString());
}
}
'알고리즘' 카테고리의 다른 글
프로그래머스 행렬 테두리 회전하기(JAVA) (0) | 2022.02.26 |
---|---|
프로그래머스 로또의 최고 순위와 최저 순위 (JAVA) (0) | 2022.02.26 |
백준 1786번 찾기 (JAVA) (0) | 2022.02.24 |
백준 1991번 트리 순회 (JAVA) (0) | 2022.02.23 |
백준 16172번 나는 친구가 적다 (JAVA) (0) | 2022.02.22 |