โ”๋ฌธ์ œโ”

1920. ์ˆ˜ ์ฐพ๊ธฐ

๐Ÿ™ŒSolution๐Ÿ™Œ

ใ€ฐ๏ธList.contins()ํ•จ์ˆ˜ ์‚ฌ์šฉ : ์‹œ๊ฐ„์ดˆ๊ณผ

fun main(){

    val numsCount=readLine()
    val nums=readLine()!!.split(" ")

    val inputsCount=readLine()
    val inputs=readLine()!!.split(" ")

    inputs.forEach{
        println("${if(nums.contains(it))1 else 0}\n")
    }

์ด ์ฝ”๋“œ๋Š” ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋๋‹ค.๐Ÿ˜…

๊ฐ€์žฅ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด์ง€๋งŒ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ $O(n^2)$์ด ๋œ๋‹ค.

inputs.forEach{
      println("${if(nums.contains(it))1 else 0}\n")
}

์œ„ ํ•จ์ˆ˜์˜ ๊ฒฝ์šฐ forEach์—์„œ inputs์„ ํ•œ๋ฒˆ ์ˆœํšŒํ•˜๋ฉฐ ๊ทธ ์•ˆ์—์„œ contains()ํ•จ์ˆ˜๋กœ ์„ ํ˜•ํƒ์ƒ‰์„ ํ•˜๊ฒŒ ๋œ๋‹ค.

๋”ฐ๋ผ์„œ ๋ฐ˜๋ณต๋ฌธ ์•ˆ์—์„œ ๋ฐ˜๋ณต๋ฌธ์ด ๋™์ž‘ํ•˜๋ฏ€๋กœ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” \(O(n^2)\)์ด ๋œ๋‹ค.

์ฝ”ํ‹€๋ฆฐ์€ ๊ฐ ํ•จ์ˆ˜์— ๋Œ€ํ•ด ์ž˜ ๋ชจ๋ฅด๋ฉด ์ฝ”๋“œ์˜ ํšจ์œจ์„ฑ์„ ํ•ธ๋“ค๋งํ•˜๊ธฐ ํž˜๋“ ๋ฐ ์ด๋Ÿฐ ๋””ํ…Œ์ผ ํ•œ ๋ถ€๋ถ„์ด ์ข€ ์žฌ๋ฏธ์žˆ๋Š” ๊ฒƒ ๊ฐ™๋‹ค.โ˜บ๏ธ

ใ€ฐ๏ธTwo pointer ์•Œ๊ณ ๋ฆฌ์ฆ˜ : ์‹œ๊ฐ„์ดˆ๊ณผ

fun main(){

    val n=readLine()!!.toInt()
    val nums=readLine()!!.split(" ").map{it.toLong()}
    val sortedNums=nums.sorted()

    val m=readLine()!!.toInt()
    val checkNums=readLine()!!.split(" ").map{it.toLong()}
    val checkNumsIndexMap=checkNums
                            .withIndex()
                            .groupBy { it.value }
                            .mapValues { it.value.map { it.index } }
    val sortedCheckNums=checkNums.sorted()

    var compareIndex=0 // ๋ฐฐ์—ด ์ธ๋ฑ์Šค๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ณ€์ˆ˜
    var checkIndex=0 // ํฌํ•จ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ณ€์ˆ˜ 

    val res=BooleanArray(m){false}

    while(checkIndex<m&&compareIndex<n){
        val num=sortedNums[compareIndex]
        val check=sortedCheckNums[checkIndex]
        if(num==check){
            checkNumsIndexMap[check]?.forEach{
                res[it]=true
            }
            checkIndex++
            compareIndex++
        }
        else if(num>check){
            checkIndex++
        }
        else compareIndex++
    }

    res.forEach{
        print("${if(it)1 else 0}\n")
    }

}

๋‘ ๋ฒˆ์งธ๋กœ ์ ‘๊ทผํ•œ ๋ฐฉ๋ฒ•์€ ์ตœ๊ทผ์— ๋ฐฐ์šด ํˆฌ ํฌ์ธํ„ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค!

์œ„ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋™์ž‘ํ•œ๋‹ค.

  1. ๋ฐฐ์—ด์„ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ
  2. ํฌํ•จ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•ด์•ผ ํ•˜๋Š” ๋ฐฐ์—ด์„ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ ๋ฐ ์›๋ž˜ ์œ„์น˜์™€ ๋งคํ•‘
  3. ํˆฌ ํฌ์ธํ„ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ†ตํ•ด ํฌํ•จ ์—ฌ๋ถ€ ํ™•์ธ

    ์ธ๋ฑ์Šค 0 ๋ถ€ํ„ฐ ์•„๋ž˜ ํ๋ฆ„์— ๋”ฐ๋ผ ๋น„๊ต

    (num : ์›๋ž˜ ๋ฐฐ์—ด์—์„œ ํ˜„์žฌ ๊ฐ€๋ฆฌํ‚ค๋Š” ์›์†Œ)

    (check : ํฌํ•จ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•ด์•ผ ํ•˜๋Š” ๋ฐฐ์—ด์—์„œ ํ˜„์žฌ ๊ฐ€๋ฆฌํ‚ค๋Š” ์›์†Œ)

์œ„์™€ ๊ฐ™์ด ๋™์ž‘ํ•˜๋Š” ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ๊ณ ๋ คํ•  ์ ์ด ์žˆ๋‹ค.

  1. ๋ฐฐ์—ด ์ •๋ ฌ ์‹œ ์‹œ๊ฐ„ ๋ณต์žก๋„ :
  2. ํฌํ•จ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•ด์•ผ ํ•˜๋Š” ๋ฐฐ์—ด ์ •๋ ฌ ๋ฐ ๋งคํ•‘ ์‹œ ์‹œ๊ฐ„ ๋ณต์žก๋„
  3. ํˆฌ ํฌ์ธํ„ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ ์‹œ๊ฐ„ ๋ณต์žก๋„

sorted()

  • ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•ด์คŒ
  • quick sort ๊ธฐ๋ฐ˜ ์ •๋ ฌ
  • ์ •๋ ฌ์€ ์•ˆ์ •์ (stable)
  • ๊ธฐ์กด ๋ฆฌ์ŠคํŠธ๋Š” ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๊ณ  ์ƒˆ๋กœ์šด ์ •๋ ฌ๋œ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•ด ๋ฐ˜ํ™˜

์ด๊ฒƒ๋„ ์กฐ์‚ฌํ•˜๋‹ค ๋ณด๋‹ˆ ๊ธธ์–ด์งˆ ๊ฒƒ ๊ฐ™์•„์„œ ์—ฌ๊ธฐ์—๋Š” ๊ฐ„๋‹จํžˆ sorted()ํ•จ์ˆ˜์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜๊ณ  ๋‹ค๋ฅธ ํฌ์ŠคํŒ…์—์„œ ์ฝ”ํ‹€๋ฆฐ์˜ ์ •๋ ฌ์— ๋Œ€ํ•œ ์ „๋ฐ˜์ ์ธ ๋‚ด์šฉ์„ ๋‹ค๋ค„๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค!

ใ€ฐ๏ธSet.contains() ํ•จ์ˆ˜ ์‚ฌ์šฉ : 1804ms

๋งˆ์ง€๋ง‰์œผ๋กœ๋Š” ์ฒซ ๋ฒˆ์งธ ์ ‘๊ทผ์—์„œ ์•ฝ๊ฐ„ ์ˆ˜์ •ํ•ด์„œ Set.contains()์„ ํ™œ์šฉํ•˜์—ฌ ํƒ์ƒ‰์„ ํ•ด๋ดค๋‹ค.

set์€ ์ž๋ฃŒ๊ตฌ์กฐ ์ƒ list๋ณด๋‹ค ๋” ํšจ์œจ์ ์œผ๋กœ ํฌํ•จ๋˜๋Š” ์›์†Œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์–ด Set.contains()๋Š” List.contins()๋ณด๋‹ค ํšจ์œจ์ด ์ข‹๋‹ค.

์‚ฌ์šฉํ•˜๋Š” set์˜ ์ข…๋ฅ˜๋ณ„๋กœ ํƒ์ƒ‰ ๋ฐฉ๋ฒ•์ด ์กฐ๊ธˆ์”ฉ ๋‹ฌ๋ผ์„œ ์ด๋ถ€๋ถ„๋„ ๋‚˜์ค‘์— ๊ณต๋ถ€ํ•ด๋ณด๋ฉด ์žฌ๋ฏธ์žˆ์„๊ฒƒ๊ฐ™๋‹ค!

fun main(){

    val n=readLine()!!.toInt()
    val nums=readLine()!!.split(" ").map{it.toLong()}.toSet()

    val m=readLine()!!.toInt()
    val checkNums=readLine()!!.split(" ").map{it.toLong()}

    checkNums.forEach{
        print("${if(nums.contains(it))1 else 0}\n")
    }

}

๐Ÿš€Advanced๐Ÿš€

๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ํ’€์ด๋ฅผ ๋ณด๋‹ˆ ๊ฐ€์žฅ ๋น ๋ฅธ ํ’€์ด๋Š” 268ms๋กœ ๋‚ด ํ’€์ด๋ณด๋‹ค 7๋ฐฐ ์ •๋„ ๋นจ๋ž๋‹ค.

๋‹ค๋ฅธ ํ’€์ด๋“ค๋„ ๋Œ€๋ถ€๋ถ„ 500ms๋Œ€๋กœ ๋‚ด ํ’€์ด๋ณด๋‹ค 3๋ฐฐ์ •๋„ ๋นจ๋ž๋‹ค.

๋ฐฑ์ค€์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ตฌ๋ถ„์„ ๋ณด๋‹ˆ ์ด์ง„ ํƒ์ƒ‰์„ ํ™œ์šฉํ•˜์—ฌ ๋น ๋ฅด๊ฒŒ ํ’€์ดํ•  ์ˆ˜ ์žˆ๋Š” ๋“ฏ ํ–ˆ๋‹ค.

ใ€ฐ๏ธ์ด์ง„ ํƒ์ƒ‰ : 864ms

์ง€๊ธˆ ์ƒ๊ฐํ•˜๋ฉด ์ฒซ ๋ฒˆ์งธ ์‹œ๋„ ํ›„์— ์ด์ง„ ํƒ์ƒ‰ ์ ‘๊ทผ์„ ๊ณ ๋ คํ•ด ๋ณผ ์ˆ˜๋„ ์žˆ์—ˆ์„ํ…๋ฐ ํ•˜๋Š” ์ƒ๊ฐ์ด ๋“ ๋‹ค๐Ÿฅฒ

์ด๋ฒˆ์—๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋ณ€๊ฒฝ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ IO์— ๊ด€๋ จ๋œ ์ฝ”๋“œ๋„ ๊ฐœ์„ ํ•ด๋ณด์•˜๋‹ค.

import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter

fun main(){

    val br=BufferedReader(InputStreamReader(System.`in`))
    val bw=BufferedWriter(OutputStreamWriter(System.out))

    val n=br.readLine().toInt()
    val nums=br.readLine().split(" ").map{it.toInt()}.toMutableList()
    nums.sort()

    val m=br.readLine().toInt()
    val checkNums=br.readLine().split(" ").map{it.toInt()}

    checkNums.forEach{
        bw.write("${if(nums.binarySearch(it)<0)0 else 1}\n")
    }

    bw.flush()

}
  • Buffer๋ฅผ ์‚ฌ์šฉํ•œ IO ํšจ์œจ ๊ฐœ์„ 

      val br=BufferedReader(InputStreamReader(System.`in`))
    
    • System.in : ํ‘œ์ค€ ์ž…์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ(ํ‚ค๋ณด๋“œ ๋“ฑ) ์˜๋ฏธ
    • InputStreamReader : ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ(InputStream)โ†’ ๋ฌธ์ž ์ŠคํŠธ๋ฆผ(Reader)
    • BufferedReader : InputStreamReader์—์„œ ๋ณ€ํ™˜ํ•œ ๋ฌธ์ž ์ŠคํŠธ๋ฆผ์„ ๋ฒ„ํผ๋ง.
      val bw=BufferedWriter(OutputStreamWriter(System.out))
    
    • System.out : ํ‘œ์ค€ ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ(์ฝ˜์†” ์ถœ๋ ฅ ๋“ฑ) ์˜๋ฏธ
    • OutputStreamWriter : ๋ฌธ์ž์ŠคํŠธ๋ฆผ(Writer)โ†’ ๋ฐ”์ดํŠธ์ŠคํŠธ๋ฆผ(OutputStreamWriter)
    • BufferedWriter : ๋ฌธ์ž์ŠคํŠธ๋ฆผ์„ ๋ฒ„ํผ๋งํ•˜๋‹ค๊ฐ€(write()) OutputStreamWriter๋ฅผ ์‚ฌ์šฉํ•ด ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋ณ€ํ™˜ ํ›„ ํ•œ๋ฒˆ์— ๋‚ด๋ณด๋ƒ„(flush()).
  • ์ด์ง„ ํƒ์ƒ‰ ์‚ฌ์šฉ

      val nums=br.readLine().split(" ").map{it.toInt()}.toMutableList()
      nums.sort()
    
    • ์ด์ง„ ํƒ์ƒ‰์„ ํ•˜๊ธฐ ์œ„ํ•ด nums๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ
    • ์ด๋•Œ ์ •๋ ฌ ๋ฐฉ๋ฒ•์€ quicksort
      bw.write("${if(nums.binarySearch(it)<0)0 else 1}\n")
    
    • binarySearch()ํ•จ์ˆ˜๋กœ ์ด์ง„ํƒ์ƒ‰ ์ˆ˜ํ–‰

ํˆฌํฌ์ธํ„ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ vs ์ด์ง„ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜

๋‚ด๊ฐ€ ์ด ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ’€ ๋•Œ ๊ฐ€์žฅ ๋งŽ์ด ๊ณ ๋ฏผํ–ˆ๋˜ ๊ฑด ํˆฌ ํฌ์ธํ„ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ํ‘ธ๋Š” ๊ฒŒ ๋” ํšจ์œจ์ ์œผ๋กœ ๋ณด์˜€๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์ด์ง„ ํƒ์ƒ‰์˜ ๊ฒฝ์šฐ ๋งค ์›์†Œ๋งˆ๋‹ค ํƒ์ƒ‰์„ ํ•ด์•ผ ํ•˜๋Š”๋ฐ ๋น„ํ•ด ํˆฌ ํฌ์ธํ„ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ํ•œ๋ฒˆ์˜ ๋ฐ˜๋ณต๋ฌธ์—์„œ ๋‹ต์„ ์ฐพ์•„๋‚ผ ์ˆ˜ ์žˆ์œผ๋‹ˆ ๋ญ”๊ฐ€ ๋” ํšจ์œจ์ ์ด์—ฌ ๋ณด์˜€๋‹ค.

๋น„๊ต ํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๊ฐ ์ฝ”๋“œ์˜ ์ ˆ์ฐจ ๋ณ„๋กœ ์‚ฌ์šฉ๋œ ํ•จ์ˆ˜๋ฅผ ํ‘œ๋กœ ์ •๋ฆฌํ•ด๋ณด์•˜๋‹ค.

๊ตฌ๋ถ„ ํˆฌํฌ์ธํ„ฐ ์ด์ง„ํƒ์ƒ‰
์ˆซ์ž ๋ฐฐ์—ด ์ •๋ ฌ split
map
sorted
sort
(์‹œ๊ฐ„๋ณต์žก๋„) $O(nlogn)$ $O(nlogn)$
ํ™•์ธ ์ˆซ์ž ๋ฐฐ์—ด ์ •๋ ฌ groupBy
mapValues
sorted
x
(์‹œ๊ฐ„๋ณต์žก๋„) $O(mlogm)$ x
ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜ Two Pointer Binary Search
(์‹œ๊ฐ„๋ณต์žก๋„) $O(n+m)$ $O(m log n)$
์ „์ฒด ์‹œ๊ฐ„ ๋ณต์žก๋„ $O(nlogn+mlogm+n+m)$ $O(nlogn+mlogn)$

๊ทธ๋ƒฅ ์ƒ๊ฐํ–ˆ์„ ๋•Œ๋Š” ํˆฌ ํฌ์ธํ„ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋นจ๋ผ ๋ณด์˜€๋Š”๋ฐ ํˆฌ ํฌ์ธํ„ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์“ฐ๊ธฐ ์œ„ํ•œ ์ „์ฒ˜๋ฆฌ ๊ณผ์ •์—์„œ ์ด์ง„ํƒ์ƒ‰๋ณด๋‹ค ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋งŽ์ด ์ผ์–ด๋‚จ์„ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ด ๋ฌธ์ œ์—์„œ๋Š” ์ด์ง„ํƒ์ƒ‰์„ ํ™œ์šฉํ•˜๋Š”๊ฒŒ ๋” ์ ํ•ฉํ•˜๋‹ค๋Š” ๊ฒฐ๋ก ์„ ๋‚ด๋ฆด ์ˆ˜ ์žˆ๋‹ค.

ใ€ฐ๏ธSet.contains() + IO ๊ฐœ์„  : 676ms

๊ณต๋ถ€๋ฅผ ํ•˜๋‹ค ๋ณด๋‹ˆ set.contains๊ฐ€ ์ด์ง„ ํƒ์ƒ‰๋ณด๋‹ค ํšจ์œจ์ด ์ข‹์ง€ ์•Š์„๊นŒ ํ•˜๋Š” ์ƒ๊ฐ์ด ๋ฌธ๋œฉ ๋“ค์–ด ์„ธ ๋ฒˆ์งธ ์‹œ๋„ํ•œ ์ฝ”๋“œ์—์„œ IO๋ฅผ ๋ฒ„ํผ๋ฅผ ์‚ฌ์šฉํ•ด ๊ฐœ์„ ํ•ด ๋ณด์•˜๋‹ค.

fun main(){

    val br=BufferedReader(InputStreamReader(System.`in`))
    val bw=BufferedWriter(OutputStreamWriter(System.out))
    val n=br.readLine().toInt()
    val nums=br.readLine().split(" ").map{it.toLong()}.toSet()

    val m=br.readLine().toInt()
    val checkNums=br.readLine().split(" ").map{it.toLong()}

    checkNums.forEach{
        bw.write("${if(nums.contains(it))1 else 0}\n")
    }

    bw.flush()

}

๊ฒฐ๊ณผ๋Š” 676ms๋กœ ๊ฐ€์žฅ ๋นจ๋ž๋‹ค!

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ์ธ ์ค„ ์•Œ์•˜๋Š”๋ฐ ์ž…์ถœ๋ ฅ์˜ ๋น„ํšจ์œจ์ด ๊ฐ€์žฅ ํฐ ๋ฌธ์ œ์˜€๋‚˜๋ณด๋‹ค.๐Ÿ˜…

์•ฝ๊ฐ„ ํ—ˆํƒˆํ•˜๊ธฐ๋„ ํ•˜์ง€๋งŒ set์˜ contains()ํ•จ์ˆ˜๋ฅผ ์กฐ์‚ฌํ•˜๋‹ค ๋ณด๋‹ˆ ์ด๊ฒƒ๋„ ๊ณต๋ถ€ ๊ฑฐ๋ฆฌ๊ฐ€ ๊ฝค ์žˆ์–ด์„œ ์˜คํžˆ๋ ค ์ข‹๋‹ค!๐Ÿ˜‚

๐Ÿ” JAVA๋กœ ํ’€์–ด๋ณด๊ธฐ๐Ÿ” 

๋งˆ์Œ ๊ฐ™์•„์„œ๋Š” ์ฝ”ํ‹€๋ฆฐ์œผ๋กœ ์ฝ”ํ…Œ๋ฅผ ์ค€๋น„ํ•˜๊ณ  ์‹ถ์ง€๋งŒ ์ฝ”ํ…Œ์—์„œ ์ฝ”ํ‹€๋ฆฐ์˜ ์ž…์ง€๋Š” ๋„ˆ๋ฌด๋‚˜ ์ข์œผ๋ฏ€๋กœ ๊ฒธ์‚ฌ๊ฒธ์‚ฌ ๋งˆ์ง€๋ง‰ ์ฝ”๋“œ๋ฅผ ์ž๋ฐ”๋กœ ์ฝ”๋”ฉํ•˜๋ฉด์„œ ์ž๋ฐ”๋„ ๊ฐ™์ด ์—ฐ์Šตํ•ด๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค.๐Ÿฅฒ

import java.util.HashSet;
import java.util.Scanner;

public class Main {

    public static void main(String[] args){

        Scanner sc = new Scanner(System.in);
        int n=sc.nextInt();
        sc.nextLine();

        HashSet<Integer> set= new HashSet<Integer>();
        String[] nums=sc.nextLine().split(" ");

        for(int i=0;i<n;i++){
            set.add(Integer.parseInt(nums[i]));
        }

        int m=sc.nextInt();
        sc.nextLine();

        String[] checkNums=sc.nextLine().split(" ");

        for(int i=0;i<m;i++){
            int num=Integer.parseInt(checkNums[i]);
            System.out.println(set.contains(num)?1:0);
        }
    }
}

๊ฐ™์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ธ๋ฐ ์‹œ๊ฐ„์ฐจ์ด๊ฐ€ ๋งŽ์ด๋‚œ๋‹ค..ใ…œ

์•„์ง ์ž๋ฐ”๊ฐ€ ๋ฏธ์ˆ™ํ•ด์„œ ๊ทธ๋Ÿฐ๊ฐ€ ๋ณด๋‹ค.

์ž๋ฐ”๋กœ ์ตœ์ ํ™”ํ•˜๋Š” ๊ฒƒ๋„ ํ•˜๊ณ ์‹ถ์ง€๋งŒ ์ง€๊ธˆ์€ ๋„ˆ๋ฌด ๋ฐฉ์ „์ด๋ผ์„œ ๋‹ค์Œ์— ๋‹ค๋ฅธ ์ฝ”๋“œ๋Œ€ํ•œ ํฌ์ŠคํŒ…์—์„œ ํ•ด๋ณด๊ธฐ๋กœ ํ•œ๋‹ค๐Ÿฅฒ

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ