ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [๋ฐฑ์ค€] 3273 ๋‘ ์ˆ˜์˜ ํ•ฉ with Python
    PS 2021. 8. 30. 22:52
    728x90
    ๋ฐ˜์‘ํ˜•

    ๐Ÿ“Œ BOJ 3273 ๋‘ ์ˆ˜์˜ ํ•ฉ

    ๐Ÿ’ก ์กฐ๊ฑด ๋ฐ ํ’€์ด

    1. n๊ฐœ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ์ •์ˆ˜๋กœ ์ด๋ฃจ์–ด์ง„ ์ˆ˜์—ด A๊ฐ€ ์žˆ๋‹ค. 1 <= A[i] <= 1000000
    2. n์˜ ํฌ๊ธฐ๋Š” 1 <= n <= 100000 x์˜ ํฌ๊ธฐ๋Š” 1 <= x <= 2000000
    3. sort + binary search ์œ ํ˜•์˜ ๋ฌธ์ œ
    4. ์ž์—ฐ์ˆ˜ x๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, A[i] + A[j] = x ๋ฅผ ๋งŒ์กฑํ•˜๋Š” ์Œ์˜ ์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค.
      (A[i], A[j])

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

    from sys import stdin
    from bisect import bisect_right, bisect_left
    
    n = int(stdin.readline())
    arr = list(map(int, stdin.readline().split()))
    arr.sort()
    x = int(stdin.readline())
    
    cnt = 0
    
    for i in range(n):
        l, r = bisect_left(arr, x - arr[i]), bisect_right(arr, x - arr[i])
        if l < n:
            if arr[i] != arr[l] and l != r:
                cnt += 1
    
    print(cnt // 2)

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

    ์˜ˆ์ œ

    9
    5 12 7 10 9 1 2 3 11
    13

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

    3

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

    1. Python ์–ธ์–ด์˜ ๋ฐฐ์—ด ์ด์ง„ ๋ถ„ํ•  ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” bisect ์‚ฌ์šฉ.
    2. list๋กœ ๋ฐ›์€ ์ˆ˜์—ด์„ sort()๋กœ ์ •๋ ฌ.
    3. ์ •๋ ฌ๋œ ๋ฆฌ์ŠคํŠธ์— ๋Œ€ํ•ด 0๋ฒˆ ์ธ๋ฑ์Šค๋ถ€ํ„ฐ ์ˆœ์ฐจ์ ์œผ๋กœ ์ ‘๊ทผํ•˜๋ฉฐ
      bisect_left, bisect_right ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ๋ฐ˜ํ™˜๋ฐ›์€ ๊ฐ’(l, r)์„ ๋น„๊ตํ•œ๋‹ค.
    4. ์ˆ˜์—ด์˜ ์ด ๊ฐœ์ˆ˜(n)๋ณด๋‹ค bisect_left ๋กœ ๋ฐ˜ํ™˜๋ฐ›์€ ๊ฐ’(l)์ด ์ž‘์„ ๋•Œ๋งŒ ์‹คํ–‰ํ•œ๋‹ค.
    5. ํ˜„์žฌ ์ˆ˜์—ด์˜ i๋ฒˆ์งธ ์ˆซ์ž์™€ ์ˆ˜์—ด์˜ l๋ฒˆ์งธ ์ˆซ์ž๊ฐ€ ๊ฐ™์ง€ ์•Š์œผ๋ฉฐ, r๊ณผ l์ด ๊ฐ™์ง€ ์•Š์„ ๋•Œ cnt += 1
    6. ๋”ฐ๋กœ for๋ฌธ์˜ ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•ด์ฃผ์ง€ ์•Š์œผ๋ฉด, ์ •๋‹ต์— ํ•ด๋‹นํ•˜๋Š” (A[i], A[j]) ์Œ์ด
      ๋‘๋ฒˆ์ด ๋‚˜์˜ค๊ธฐ ๋•Œ๋ฌธ์— cnt // 2๋ฅผ ํ•ด์ค€๋‹ค.

    ๐Ÿ’พ ๋Š๋‚€์ 

    • n์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์ ‘๊ทผํ•  for๋ฌธ์˜ ๋ฒ”์œ„๋ฅผ ์ž˜๋ชป ์ง€์ •ํ•ด์ฃผ์–ด์„œ ํ‹€๋ ธ์—ˆ๋‹ค.
    • bisect ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด ์ฐพ์œผ๋ ค๊ณ  ํ•˜๋Š” ์ˆซ์ž์˜ ์ธ๋ฑ์Šค ๋ฒˆํ˜ธ๋ฅผ ์ž˜๋ชป ๊ณ„์‚ฐํ•ด์„œ ํ‹€๋ ธ์—ˆ๋‹ค.
    • ์ด๋ถ„ํƒ์ƒ‰ ๋ฌธ์ œ๋ฅผ ๋” ๋งŽ์ด ํ’€์–ด๋ณด๊ณ , ๋‹ค์–‘ํ•œ ์œ ํ˜•์„ ๊ฒฝํ—˜ํ•ด๋ณด์•„์•ผ๊ฒ ๋‹ค.
    ๋ฐ˜์‘ํ˜•

    ๋Œ“๊ธ€

Designed by Tistory.