ํฐ์คํ ๋ฆฌ ๋ทฐ
๐ฉ๐ป๐ป ๋ฌธ์
โ๐ป ํ์ด
๐จ Go
// https://www.acmicpc.net/problem/1654
// ํํ parametric search๋ผ๊ณ ๋ ๋ถ๋ฅด๋, ์ด๋ถ ํ์์ ์์ฉํ์ฌ ์ต์๊ฐ์ด๋ ์ต๋๊ฐ์ ์ฐพ๋ ํ
ํฌ๋์ ๋ฐฐ์ฐ๋ ๋ฌธ์
package main
import (
"bufio"
"fmt"
"os"
"sort"
)
func main() {
reader := bufio.NewReader(os.Stdin)
writer := bufio.NewWriter(os.Stdout)
defer writer.Flush()
var k, n int
fmt.Fscanln(reader, &k, &n)
var lengths = make([]int, k)
for i := 0; i < k; i++ {
fmt.Fscanln(reader, &lengths[i])
}
sort.Ints(lengths) // ์ฃผ์ด์ง ๋์ ๊ธธ์ด์ค ๊ฐ์ฅ ๊ธด ๋์ ์ ๊ธธ์ด๋ฅผ ํ์ ๋ฒ์๋ก ์ก๊ธฐ ์ํด ์ ๋ ฌํ๋ค.
fmt.Fprintln(writer, getMaxLength(n, lengths))
}
func getMaxLength(n int, lengths []int) (maxLength int) {
start := 1
end := lengths[len(lengths)-1] // ํ์ ๋ฒ์๋ฅผ start, end๋ก ์ง์
var mid int
for start <= end {
mid = (start + end) / 2 // ์ด๋ถ ํ์๊ณผ ์ ์ฌํ ๋ฐฉ์์ผ๋ก ๋ฒ์๋ฅผ ์ขํ ๋๊ฐ๋ค.
var totalCount int
for i := 0; i < len(lengths); i++ {
totalCount += lengths[i] / mid
}
if totalCount >= n {
if maxLength < mid {
maxLength = mid
start = mid + 1
}
} else if totalCount < n {
end = mid - 1
}
}
return
}
๐จ Python3
# https://www.acmicpc.net/problem/1654
# ํํ parametric search๋ผ๊ณ ๋ ๋ถ๋ฅด๋, ์ด๋ถ ํ์์ ์์ฉํ์ฌ ์ต์๊ฐ์ด๋ ์ต๋๊ฐ์ ์ฐพ๋ ํ
ํฌ๋์ ๋ฐฐ์ฐ๋ ๋ฌธ์
import sys
def get_max_length(n, lengths):
start = 1
end = lengths[-1]
mid = 0
max_length = 0
while start <= end:
mid = (start + end) // 2
total_count = 0
for i in range(len(lengths)):
total_count += lengths[i] // mid
if total_count >= n:
if max_length < mid:
max_length = mid
start = mid + 1
elif total_count < n:
end = mid - 1
return max_length
if __name__ == "__main__":
k, n = map(int, sys.stdin.readline().split())
lengths = []
for i in range(k):
lengths.append(int(sys.stdin.readline()))
lengths.sort()
print(get_max_length(n, lengths))
728x90
'dev > algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ / 20205๋ฒ / ๊ต์๋ ๊ทธ๋ฆผ์ด ๊นจ์ง๋๋ฐ์? [Go] (0) | 2020.11.22 |
---|---|
BOJ / 2805๋ฒ / ๋๋ฌด ์๋ฅด๊ธฐ [Go][Python3] (0) | 2020.11.21 |
BOJ / 10816๋ฒ / ์ซ์ ์นด๋ 2 [Go][Python3] (0) | 2020.11.19 |
BOJ / 1920๋ฒ / ์ ์ฐพ๊ธฐ [Go][Python3] (0) | 2020.11.17 |
BOJ / 1021๋ฒ / ํ์ ํ๋ ํ [Go][Python3] (0) | 2020.11.14 |
๋๊ธ
๊ธ ๋ณด๊ดํจ
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ
TAG
- java
- ballet
- Algorithm
- BFS
- go
- ์๊ณ ๋ฆฌ์ฆ
- MongoDB
- baekjoon
- Macbook pro 2012 mid 13
- ์๋ฐ
- Golang
- BOJ
- AWS
- ์ด๋ถํ์
- ๋งฅ๋ถ ์ ๊ทธ๋ ์ด๋
- ๋ธ๋ฃจํธํฌ์ค
- ํด์๋งต
- ์๊ฐ๊ต์ฒด
- ํ
- ๋ฐ๋
- ๋ชฝ๊ณ ๋๋น
- dp
- ๋งฅ๋ถ
- ๋ฐฑ์ค
- ๋ถํ ์ ๋ณต
- ํ๋ก์ด๋์์ฌ
- python3
- ๋งฅ๋ถํ๋ก
- ์คํ
- dfs
- Total
- Today
- Yesterday