01-24 13:36
Recent Posts
Recent Comments
๊ด€๋ฆฌ ๋ฉ”๋‰ด

miinsun

[BAEKJOON] ๋ฐฑ์ค€ ์ด๋ถ„๊ฒ€์ƒ‰ 10815 :: ์ˆซ์ž ์นด๋“œ ๋ณธ๋ฌธ

Algorithm/Baekjoon

[BAEKJOON] ๋ฐฑ์ค€ ์ด๋ถ„๊ฒ€์ƒ‰ 10815 :: ์ˆซ์ž ์นด๋“œ

miinsun 2022. 4. 7. 19:05

๐Ÿ’ฌ  ๋ฌธ์ œ ์„ค๋ช…

์ˆซ์ž ์นด๋“œ๋Š” ์ •์ˆ˜ ํ•˜๋‚˜๊ฐ€ ์ ํ˜€์ ธ ์žˆ๋Š” ์นด๋“œ์ด๋‹ค. ์ƒ๊ทผ์ด๋Š” ์ˆซ์ž ์นด๋“œ N๊ฐœ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. 

์ •์ˆ˜ M๊ฐœ๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ด ์ˆ˜๊ฐ€ ์ ํ˜€์žˆ๋Š” ์ˆซ์ž ์นด๋“œ๋ฅผ ์ƒ๊ทผ์ด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€ ์•„๋‹Œ์ง€๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

๐Ÿ”จ  ์ž…์ถœ๋ ฅ ์˜ˆ

์ž…๋ ฅ 

  • ์ฒซ์งธ ์ค„์— ์ƒ๊ทผ์ด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ˆซ์ž ์นด๋“œ์˜ ๊ฐœ์ˆ˜ N(1 ≤ N ≤ 500,000)์ด ์ฃผ์–ด์ง„๋‹ค.
  • ๋‘˜์งธ ์ค„์—๋Š” ์ˆซ์ž ์นด๋“œ์— ์ ํ˜€์žˆ๋Š” ์ •์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.
  • ์ˆซ์ž ์นด๋“œ์— ์ ํ˜€์žˆ๋Š” ์ˆ˜๋Š” -10,000,000๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 10,000,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค.
  • ๋‘ ์ˆซ์ž ์นด๋“œ์— ๊ฐ™์€ ์ˆ˜๊ฐ€ ์ ํ˜€์žˆ๋Š” ๊ฒฝ์šฐ๋Š” ์—†๋‹ค.
  • ์…‹์งธ ์ค„์—๋Š” M(1 ≤ M ≤ 500,000)์ด ์ฃผ์–ด์ง„๋‹ค.
  • ๋„ท์งธ ์ค„์—๋Š” ์ƒ๊ทผ์ด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ˆซ์ž ์นด๋“œ์ธ์ง€ ์•„๋‹Œ์ง€๋ฅผ ๊ตฌํ•ด์•ผ ํ•  M๊ฐœ์˜ ์ •์ˆ˜๊ฐ€ ์ฃผ์–ด์ง€๋ฉฐ, ์ด ์ˆ˜๋Š” ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋˜์–ด์ ธ ์žˆ๋‹ค.
  • ์ด ์ˆ˜๋„ -10,000,000๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 10,000,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค

 

์ถœ๋ ฅ

  • ์ฒซ์งธ ์ค„์— ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„ M๊ฐœ์˜ ์ˆ˜์— ๋Œ€ํ•ด์„œ, ๊ฐ ์ˆ˜๊ฐ€ ์ ํžŒ ์ˆซ์ž ์นด๋“œ๋ฅผ ์ƒ๊ทผ์ด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉด 1์„, ์•„๋‹ˆ๋ฉด 0์„ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•ด ์ถœ๋ ฅํ•œ๋‹ค.

 

์˜ˆ์ œ ์ž…๋ ฅ 1)

5
6 3 2 10 -10
8
10 9 -5 2 3 4 5 -10

 

์˜ˆ์ œ ์ถœ๋ ฅ 1)

1 0 0 1 1 0 0 1

 

โ€‹

๐Ÿ’ป  Main.java

  • ์ด๋ถ„๊ฒ€์ƒ‰์„ ์ด์šฉํ•œ ํƒ์ƒ‰
/* ๋ฐฑ์ค€ ๊ทธ๋ž˜ํ”„ - 10815 :: ์ˆซ์ž ์นด๋“œ */

import java.util.*;
import java.io.*;

public class Main {		
	public static void main(String[] args) throws IOException{
		Scanner sc = new Scanner(System.in);
		// ์ƒ๊ทผ์ด ์นด๋“œ์ •๋ณด ์ž…๋ ฅ
		int n = sc.nextInt();		
		int [] arr = new int [n];
 		for(int i = 0; i < n; i++) {
			arr[i] = sc.nextInt();
		}
 		
 		// ๋ฐฐ์—ด ์ •๋ ฌ, lt,rt ์ดˆ๊ธฐํ™”
 		Arrays.sort(arr);
 		
 		// ์ƒ๊ทผ์ด๊ฐ€ ๊ฐ–๊ณ  ์žˆ๋Š” ์นด๋“œ ์œ ๋ฌด ๊ฒ€์‚ฌ
 		int m = sc.nextInt();		
 		for(int i = 0; i < m; i++) {
 			int find = sc.nextInt();
 	 		int lt = 0;
 	 		int rt = n-1;
 	 		boolean flag = false;
 	 		
 			while(lt <= rt) {
 				int mid = (lt + rt) / 2;
 				if(find == arr[mid]) {
 					flag = true;
 					break;
 				}
 				else if(find > arr[mid]) {
 					lt = mid + 1;
 				}
 				else
 					rt = mid - 1;
 			}
 			
 			if(flag)
 				System.out.print(1 + " ");
 			else
 				System.out.print(0 + " ");
 		}

		sc.close();
	}
}
Comments