ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [๋ฐฑ์ค€] 1940 ์ฃผ๋ชฝ with Python
    PS 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. ํˆฌํฌ์ธํ„ฐ๋ฅผ ์—ฐ์Šตํ•˜๊ธฐ ๋งค์šฐ ์ข‹์€ ๋ฌธ์ œ์ธ ๊ฒƒ ๊ฐ™๋‹ค.
    ๋ฐ˜์‘ํ˜•

    ๋Œ“๊ธ€

Designed by Tistory.