PS [27일차]

Daniel·2022년 8월 13일
0

PS

목록 보기
27/32
post-thumbnail

문제번호

import java.util.*;

public class Main {
	
	public static void main(String[] args) {
		
		Scanner in = new Scanner(System.in);

		StringBuilder sb = new StringBuilder ();
		
		int testcase = in.nextInt();
		
		ArrayList <Integer> list = new ArrayList<>();
		ArrayList <Integer> compareList = new ArrayList<>();
		
		for (int i = 0 ; i < testcase ;i++) {
			list.add(in.nextInt());
		}
		
		
		Collections.sort(list);

		int compareTestcase = in.nextInt();
		
		for (int i = 0 ; i < compareTestcase ;i++) {
			compareList.add(in.nextInt());
		}

		for (int i = 0 ; i < compareTestcase ;i++) {
			if (binSearchListIndex (list, compareList.get(i)) == -1)
				sb.append(0+" ");
			else
				sb.append(1+" ");
		}
		
		System.out.println(sb);
		
	}
	static int binSearchListIndex (ArrayList <Integer> list , int value) {
		
		int startIndex = 0;
		int endIndex = list.size() - 1;
		
		while (startIndex <= endIndex) {
			int mid = (startIndex + endIndex) /2;
			
			if (value > list.get(mid)) 
				startIndex = mid +1;
			
			else if (value < list.get(mid)) 
				endIndex = mid -1;
			
			else 
				return mid;
		}
		return -1;
	}
	
 }

문제

https://www.acmicpc.net/problem/10815

풀이

  • 탐색시 2진 탐색을 이용해야 한다. 이를 간과하고 돌렸다가 시간초과 당했다.
profile
폐쇄

0개의 댓글