glowing713
Frontend-Deep-Dive
glowing713
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (97)
    • Languages (11)
      • JavaScript ๐Ÿ’› (3)
      • Python ๐Ÿ (4)
      • Java โ˜•๏ธ (3)
      • Swift ๐Ÿงก (1)
    • Computer_Science (1)
      • Computer_Network ๐Ÿ•ธ (1)
    • Web_Frontend (4)
      • Vue.js (1)
    • Problem_Solving (76)
    • Server (1)
      • Spring ๐Ÿ€ (1)
    • AI (2)
      • NLP ๐Ÿ—ฃ (1)
      • AI_Math โž— (1)
    • ๊ฐœ๋ฐœํ™˜๊ฒฝ ๊พธ๋ฏธ๊ธฐ โœŒ (1)
    • ์ƒ๊ฐ์ •๋ฆฌ โœ๐Ÿป (1)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ๐Ÿง‘๐Ÿปโ€๐Ÿ’ปGithub

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • Java
  • DP
  • ์นด์นด์˜ค ๊ธฐ์ถœ
  • Baekjoon
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
  • c++
  • mst
  • Stack
  • 2019 ์นด์นด์˜ค ๊ฐœ๋ฐœ์ž ๊ฒจ์šธ ์ธํ„ด์‹ญ
  • ps
  • ์ด๋ถ„ํƒ์ƒ‰
  • boostcampaitech
  • bfs
  • Algorithm
  • ๋™์ ๊ณ„ํš๋ฒ•
  • Python
  • BOJ
  • brute-force
  • ์™„์ „ํƒ์ƒ‰
  • binary search

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
glowing713

Frontend-Deep-Dive

[BOJ] ๋ฐฑ์ค€ 2805 ๋‚˜๋ฌด ์ž๋ฅด๊ธฐ / ์ด๋ถ„ํƒ์ƒ‰
Problem_Solving

[BOJ] ๋ฐฑ์ค€ 2805 ๋‚˜๋ฌด ์ž๋ฅด๊ธฐ / ์ด๋ถ„ํƒ์ƒ‰

2021. 2. 9. 17:41

์ด๋ฏธ์ง€๋ฅผ ํด๋ฆญํ•˜๋ฉด ๋ฌธ์ œ ์‚ฌ์ดํŠธ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

 

 

๐Ÿ’ญ ๋ฌธ์ œ ์ดํ•ด

 

์ž๋ฅผ ์ˆ˜ ์žˆ๋Š” ์ตœ์†Œ ๋†’์ด์ธ 1 ๋ถ€ํ„ฐ max(๋‚˜๋ฌด์˜ ๋†’์ด ๋ฐฐ์—ด) ์‚ฌ์ด์—์„œ ์ตœ์†Œ m๋ฏธํ„ฐ ๊ธธ์ด์˜ ๋‚˜๋ฌด๋ฅผ ๊ฐ€์ ธ๊ฐ€๊ธฐ ์œ„ํ•ด

์ด๋ถ„ํƒ์ƒ‰์„ ์ง„ํ–‰ํ•˜๋ฉฐ m์„ ์ฐพ์•„๋‚˜๊ฐ€๋Š” ๋ฌธ์ œ์ด๋‹ค.

 

์ž๋ฅธ ๋‚˜๋ฌด ๊ธธ์ด์˜ ํ•ฉ์„ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด ์ตœ์•…์˜ ๊ฒฝ์šฐ 100๋งŒ ๋ฒˆ์˜ sum ์—ฐ์‚ฐ์ด log(109) ๋งŒํผ ๋ฐ˜๋ณต๋œ๋‹ค.

์ด ํ’€์ด๋„ ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€๋Š” ์•Š์ง€๋งŒ

Counter๋ฅผ ์‚ฌ์šฉํ•ด์„œ 100๋งŒ ๋ฒˆ์˜ ์—ฐ์‚ฐ์„ ๊ฐ์†Œ์‹œ์ผœ ์‹œ๊ฐ„์„ ์ค„์ด๋Š” ํ’€์ด๋ฅผ ์ฐพ๊ฒŒ ๋˜์—ˆ๋‹ค.

 

 

 

๊ตฌํ˜„ ์–ธ์–ด: Python

 

 

1. ๋‚ด ํ’€์ด

import sys

r = sys.stdin.readline


def binary_search(m, trees):
    answer = 0
    left = 1
    right = max(trees)

    while left <= right:
        mid = (left + right) // 2
        total_cut = sum(map(lambda x: x - mid if x >= mid else 0, trees))
        if total_cut >= m:
            answer = mid
            left = mid + 1
        else:
            right = mid - 1
    return answer


n, m = map(int, r().split())
trees = list(map(int, r().split()))
print(binary_search(m, trees))

 

2. Counter๋ฅผ ํ™œ์šฉ

from collections import Counter
import sys

r = sys.stdin.readline


def binary_search(m, trees):
    answer = 0
    left = 1
    right = max(trees)

    while left <= right:
        mid = (left + right) // 2
        total_cut = sum((tree - mid)*cnt for tree, cnt in trees.items() if tree > mid)

        if total_cut >= m:
            answer = mid
            left = mid + 1
        else:
            right = mid - 1
    return answer


n, m = map(int, r().split())
trees = Counter(map(int, r().split()))
print(binary_search(m, trees))

 

์ด ๊ฒฐ๊ณผ ์•ฝ 7๋ฐฐ์ •๋„ ์†๋„๊ฐ€ ๋นจ๋ผ์ง„ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'Problem_Solving' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[BOJ] ๋ฐฑ์ค€ 1654 ๋žœ์„  ์ž๋ฅด๊ธฐ / ์ด๋ถ„ํƒ์ƒ‰  (0) 2021.02.09
[BOJ] ๋ฐฑ์ค€ 10815 ์ˆซ์ž ์นด๋“œ / ์ด๋ถ„ํƒ์ƒ‰  (0) 2021.02.09
[BOJ] ๋ฐฑ์ค€ 1920 ์ˆ˜ ์ฐพ๊ธฐ / ์ด๋ถ„ํƒ์ƒ‰  (0) 2021.02.09
[BOJ] ๋ฐฑ์ค€ 9205 ๋งฅ์ฃผ ๋งˆ์‹œ๋ฉด์„œ ๊ฑธ์–ด๊ฐ€๊ธฐ / BFS  (0) 2021.02.08
[BOJ] ๋ฐฑ์ค€ 2573 ๋น™์‚ฐ / BFS  (0) 2021.01.14
    'Problem_Solving' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [BOJ] ๋ฐฑ์ค€ 1654 ๋žœ์„  ์ž๋ฅด๊ธฐ / ์ด๋ถ„ํƒ์ƒ‰
    • [BOJ] ๋ฐฑ์ค€ 10815 ์ˆซ์ž ์นด๋“œ / ์ด๋ถ„ํƒ์ƒ‰
    • [BOJ] ๋ฐฑ์ค€ 1920 ์ˆ˜ ์ฐพ๊ธฐ / ์ด๋ถ„ํƒ์ƒ‰
    • [BOJ] ๋ฐฑ์ค€ 9205 ๋งฅ์ฃผ ๋งˆ์‹œ๋ฉด์„œ ๊ฑธ์–ด๊ฐ€๊ธฐ / BFS
    glowing713
    glowing713

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”