MUKER_DEV with iOS

[swift] ๋ฐฑ์ค€ - 2805๋ฒˆ: ๋‚˜๋ฌด ์ž๋ฅด๊ธฐ ๋ณธ๋ฌธ

๐Ÿค– ์•Œ๊ณ ๋ฆฌ์ฆ˜/BAEKJOON

[swift] ๋ฐฑ์ค€ - 2805๋ฒˆ: ๋‚˜๋ฌด ์ž๋ฅด๊ธฐ

MUKER 2023. 2. 17. 15:19
 

2805๋ฒˆ: ๋‚˜๋ฌด ์ž๋ฅด๊ธฐ

์ฒซ์งธ ์ค„์— ๋‚˜๋ฌด์˜ ์ˆ˜ N๊ณผ ์ƒ๊ทผ์ด๊ฐ€ ์ง‘์œผ๋กœ ๊ฐ€์ ธ๊ฐ€๋ ค๊ณ  ํ•˜๋Š” ๋‚˜๋ฌด์˜ ๊ธธ์ด M์ด ์ฃผ์–ด์ง„๋‹ค. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) ๋‘˜์งธ ์ค„์—๋Š” ๋‚˜๋ฌด์˜ ๋†’์ด๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋‚˜๋ฌด์˜ ๋†’์ด์˜ ํ•ฉ์€ ํ•ญ์ƒ M๋ณด

www.acmicpc.net

๋ฌธ์ œ ํ‘ธ๋Š” ๋ฐ ์žˆ์–ด ๋„์›€์ด ๋˜๋„๋ก ๋‚˜์˜ ํ’€์ด์™€ ๊ฐœ์„ ๋œ ํ’€์ด๋ฅผ ์˜ฌ๋ฆฝ๋‹ˆ๋‹ค.
๋˜ํ•œ ํ’€์ด ํ›„ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ํ’€์ด๋ฅผ ๋ณด๊ณ  ์ฐธ๊ณ ํ• ๋งŒํ•œ ํ’€์ด๋„ ์˜ฌ๋ฆฝ๋‹ˆ๋‹ค.

- ๋ฌธ์ œ์— ๋”ฐ๋ผ ๋‚˜์˜ ํ’€์ด๋งŒ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
- ํ•ด๋‹น ํ’€์ด๋“ค์€ ํ’€์ด ์ค‘ ํ•˜๋‚˜์ผ ๋ฟ ์ตœ์„ ์˜ ํ’€์ด๋Š” ์•„๋‹ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 


 

๋‚˜์˜ ํ’€์ด

let NM = readLine()!.split(separator: " ").map { Int($0)! }
let M = NM[1]
let tree = readLine()!.split(separator: " ").map { Int($0)! }
var left = 1
var right = tree.max()!
var result = 0
while left <= right {
    let mid = (left+right) / 2
    var m = 0
    for j in tree { if j > mid { m += j - mid } }
    if m >= M { left = mid + 1; result = mid }
    else { right = mid - 1 }
}
print(result)

 

- ์ด๋ถ„ํƒ์ƒ‰์„ ์ด์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ’€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

- ์•„์ง ์กฐ๊ฑด์— ๋”ฐ๋ผ left๊ฐ’์ด ๋‚˜์™€์•ผํ•˜๋Š”์ง€

right๋‚˜ mid์˜ ๊ฐ’์ด ๋‚˜์™€์•ผ ํ•˜๋Š”์ง€ ํ—ท๊ฐˆ๋ฆฌ๋„ค์š”..ใ…Ž

๊ทธ ๋ถ€๋ถ„์„ ์ข€ ๋” ๋ณด์ถฉ ๊ณต๋ถ€ํ•ด์•ผ๊ฒ ์Šต๋‹ˆ๋‹ค.