PS

[๋ฐฑ์ค€] 1940 ์ฃผ๋ชฝ with Python

ํ˜•์ค€_It's 2022. 2. 7. 22:35
728x90
๋ฐ˜์‘ํ˜•

๐Ÿ“Œ BOJ 1940 ์ฃผ๋ชฝ

๐Ÿ’ก ์กฐ๊ฑด

  1. ๊ฐ‘์˜ท์€ ๋‘ ๊ฐœ์˜ ์žฌ๋ฃŒ๋กœ ๋งŒ๋“œ๋Š”๋ฐ ๋‘ ์žฌ๋ฃŒ์˜ ๊ณ ์œ ํ•œ ๋ฒˆํ˜ธ๋ฅผ ํ•ฉ์ณ์„œ M(1 โ‰ค M โ‰ค 10,000,000)์ด ๋˜๋ฉด ๊ฐ‘์˜ท์ด ๋งŒ๋“ค์–ด ์ง€๊ฒŒ ๋œ๋‹ค.

  2. N(1 โ‰ค N โ‰ค 15,000) ๊ฐœ์˜ ์žฌ๋ฃŒ์™€ M์ด ์ฃผ์–ด์กŒ์„ ๋•Œ ๋ช‡ ๊ฐœ์˜ ๊ฐ‘์˜ท์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ

  3. ์ •๋ ฌ, ํˆฌ ํฌ์ธํ„ฐ ์œ ํ˜•์˜ ๋ฌธ์ œ

๐Ÿ–ฅ ์†Œ์Šค ์ฝ”๋“œ

from sys import stdin
from bisect import bisect_left

n = int(stdin.readline())
m = int(stdin.readline())
arr = sorted(list(map(int, stdin.readline().split())))
res = 0
visited = set()
arr.sort()

for i in arr:
    f = bisect_left(arr, m-i)
    if f < n and arr[f] != i:
        temp = arr[f]
        if temp + i == m and (temp, i) not in visited:
            visited.add((temp, i))
            visited.add((i, temp))
            res += 1

print(res)

๐Ÿ”– ์˜ˆ์ œ ๋ฐ ์‹คํ–‰๊ฒฐ๊ณผ

์˜ˆ์ œ

6
9
2 7 4 1 5 3

์‹คํ–‰๊ฒฐ๊ณผ

2

โŒจ๏ธ ๋ฌธ์ œ ํ’€์ด

  1. ์ •๋ ฌ์„ ํ•ด์„œ ํˆฌํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ด ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š” ๊ฒƒ์ด ์ด ๋ฌธ์ œ์˜ ์š”์ ์ธ ๊ฒƒ ๊ฐ™๋‹ค.

  2. ๋‚˜๋Š” ํŒŒ์ด์ฌ bisect ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ bisect_left ๋ฅผ ์จ์„œ ์‰ฝ๊ฒŒ ํ’€์ˆ˜ ์žˆ์—ˆ๋‹ค.

  3. ์žฌ๋ฃŒ๋“ค์˜ ๊ฐ ๊ณ ์œ ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ๋†“์€ arr์ด๋ผ๋Š” ๋ณ€์ˆ˜๋ฅผ ์ •๋ ฌํ•˜๊ณ  ์ˆœํšŒํ•œ๋‹ค.

  4. (3)๋ฒˆ์„ ํ†ตํ•ด ์ˆœํšŒํ•˜๋Š” ๊ฐ’์ธ i๊ฐ€ ์žˆ๋‹ค.
    ๊ฐ‘์˜ท์ด ๋งŒ๋“ค์–ด์ง€๊ธฐ ์œ„ํ•œ ๊ฐ’ m ์—์„œ i๋ฅผ ๋บ€ ๊ฐ’์ด arr ๋ฆฌ์ŠคํŠธ์— ์œ„์น˜ํ•˜๊ณ  ์žˆ๋Š”์ง€
    bisect_left ๋ฅผ ํ†ตํ•ด ์ด๋ถ„ํƒ์ƒ‰ํ•ด์ค€ ๊ฒฐ๊ณผ๋ฅผ f ๋ณ€์ˆ˜์— ์ €์žฅํ•œ๋‹ค.
    f ๊ฐ€ n ๋ณด๋‹ค ์ž‘๊ณ , arr[f]๊ฐ€ i์™€ ๊ฐ™์ง€ ์•Š๋‹ค๋ฉด, i + f๋Š” m์ด๋‹ค.

  5. (4)์—์„œ ๋‚˜์˜จ ๊ฒฐ๊ณผ ๊ฐ’์ด ์ฐธ์ธ์ง€ ํ™•์ธํ•˜๊ณ , (arr[f], i) ์˜ ์Œ์ด ํ•œ๋ฒˆ๋„ ๋‚˜์˜จ์  ์—†๋Š” ์กฐํ•ฉ์ด๋ผ๋ฉด
    res + 1์„ ํ•ด์ฃผ๊ณ , (arr[f], i), (i, arr[f]) ๋ฅผ visited์— ์ €์žฅํ•ด ์ด๋ฏธ ๋‚˜์˜จ ์กฐํ•ฉ์ด๋ผ๊ณ  ํ‘œ์‹œํ•ด๋‘”๋‹ค.

  6. (1)~(5) ๊ณผ์ •์„ ๊ฑฐ์น˜๊ณ  ๋‚œ ํ›„, res๋ฅผ ์ถœ๋ ฅํ•ด์ค€๋‹ค.

๐Ÿ’พ ๋А๋‚€์ 

  1. ํˆฌํฌ์ธํ„ฐ๋กœ ํ’€๋ฉด ํ›จ์”ฌ ์‰ฌ์› ์„ ๊ฒƒ ๊ฐ™์€๋ฐ, 3๋‹ฌ ์ „์˜ ๋‚˜๋Š” ์™œ bisect ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ–ˆ์„๊นŒ?
  2. ํˆฌํฌ์ธํ„ฐ๋ฅผ ์—ฐ์Šตํ•˜๊ธฐ ๋งค์šฐ ์ข‹์€ ๋ฌธ์ œ์ธ ๊ฒƒ ๊ฐ™๋‹ค.
๋ฐ˜์‘ํ˜•