๊ด€๋ฆฌ ๋ฉ”๋‰ด

๐Ÿ’ป๐Ÿ’ญ๐ŸŽง๐ŸŒ

BOJ 1920 : ์ˆ˜ ์ฐพ๊ธฐ (Python) ๋ณธ๋ฌธ

์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฐฑ์ค€ ํ’€์ด

BOJ 1920 : ์ˆ˜ ์ฐพ๊ธฐ (Python)

adorableco 2023. 11. 19. 19:18
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ

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

 

1920๋ฒˆ: ์ˆ˜ ์ฐพ๊ธฐ

์ฒซ์งธ ์ค„์— ์ž์—ฐ์ˆ˜ N(1 โ‰ค N โ‰ค 100,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ ์ค„์—๋Š” N๊ฐœ์˜ ์ •์ˆ˜ A[1], A[2], โ€ฆ, A[N]์ด ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ ์ค„์—๋Š” M(1 โ‰ค M โ‰ค 100,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ ์ค„์—๋Š” M๊ฐœ์˜ ์ˆ˜๋“ค์ด ์ฃผ์–ด์ง€๋Š”๋ฐ, ์ด ์ˆ˜๋“ค

www.acmicpc.net

 

 

์ฝ”๋“œ

from bisect import bisect_left, bisect_right

n = int(input())
nlist = list(map(int, input().split()))
nlist.sort()
m = int(input())
mlist = list(map(int, input().split()))

for i in range(m):
    if (bisect_right(nlist, mlist[i])-bisect_left(nlist, mlist[i])):
        print(1)
    else:
        print("result= "+str(bisect_right(nlist,
              mlist[i])-bisect_left(nlist, mlist[i])))
        print(0)

 

ํ’€์ด

  • ์ •๋ ฌ๋œ list ์—์„œ ์ด์ง„ํƒ์ƒ‰์„ ์ด์šฉํ•จ
  • bisect_left(list, num)
    -> list ๋‚ด์—์„œ num ์ด ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ์™ผ์ชฝ์˜ index๋ฅผ ๋ฐ˜ํ™˜
  • bisect_right(list, num)
    -> list ๋‚ด์—์„œ num ์ด ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ์˜ index๋ฅผ ๋ฐ˜ํ™˜


    ex) [1,2,2,4,5] ๋ฆฌ์ŠคํŠธ์—์„œ 2๋ผ๋Š” ์ˆซ์ž๊ฐ€ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ์™ผ์ชฝ index๋Š” 1, ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ index๋Š” 3

  • num์ด list์— ์กด์žฌํ•œ๋‹ค๋ฉด ์‚ฝ์ž…ํ•  ๊ฐ™์€ ์ˆซ์ž์˜ num์€ list์— ์กด์žฌํ•˜๋Š” num์˜ ์•ž๋’ค๋กœ ๋ชจ๋‘ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋ฏ€๋กœ bisect_left(list,num)-bisect_right(list,num) ์€ 1 ์ด์ƒ์ผ ๊ฒƒ
  • ๋ฐ˜๋Œ€๋กœ num์ด list์— ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์–ด๋Š ์ˆซ์ž๋“ค ์‚ฌ์ด์— ํ•œ๊ตฐ๋ฐ๋งŒ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ bisect_left(list,num)-bisect_right(list,num) ์€ 0์ผ ๊ฒƒ

์ฐธ๊ณ ์‚ฌํ•ญ

if num in list:

์ด๋Ÿฐ ์‹์œผ๋กœ list ๋‚ด์—์„œ num ์„ ์ฐพ์œผ๋ ค๊ณ  ํ•˜๋ฉด ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋œธ.

๋ฐ˜์‘ํ˜•