๐ ๋ฌธ์
๐ง ์์ด๋์ด
์ธ ์์ ๋ชจ๋ ์กฐํฉ์ ๊ตฌํด์ ํด๋น ์ซ์๊ฐ ์งํฉ ๋ด์ ์กด์ฌํ๋์ง ํ์ธํ๋ ํ์ด๋ฅผ ๋ ์ฌ๋ฆด ์ ์๋ค.
๊ทธ๋ฌ๋ ์๊ฐ์ด๊ณผ๊ฐ ๋ฐ๋์ ๊ฑธ๋ฆฌ๊ธฐ ๋๋ฌธ์
์ธ ์์ ํฉ์ด๋ผ๋ ์ํฉ์ ๋ ์์ ํฉ + ๋๋จธ์ง ํ ์ == ๊ฒฐ๊ณผ ๊ฐ k ๋ผ๋ ์์ ๋ณํํ์ฌ ์๊ฐ๋ณต์ก๋๋ฅผ ๋ฎ์ถ๋๋ฐ ์๋ค.
์ด๋ก์
$$ O(N^2 \,Log_2N) $$
์๊ฐ ๋ณต์ก๋๋ก ํ์ดํ ์ ์๋ค.
๐ Kotlin Code
import java.io.BufferedReader
import java.io.InputStreamReader
fun main() {
val br = BufferedReader(InputStreamReader(System.`in`))
val N = br.readLine().toInt()
val nums = IntArray(N)
repeat(N) {idx->
nums[idx] = br.readLine().toInt()
}
nums.sort()
// N^2
val prefixSumArr = ArrayList<Int>(N * N)
for (i in nums.indices) {
for (j in nums.indices) {
prefixSumArr.add(nums[i] + nums[j])
}
}
prefixSumArr.sort()
for (i in nums.indices.reversed()) {
for (j in nums.indices) {
if (prefixSumArr.binarySearch(nums[i] - nums[j]) >= 0) {
print(nums[i])
return
}
}
}
}
p.s.
๋์์ ํฉ ์งํฉ ๋ด์ ์กด์ฌํ๋์ง ์ฌ๋ถ๋ฅผ ์ด๋ถํ์์ด ์๋๋ผ
HashSet/HashMap ์ผ๋ก ๊ด๋ฆฌํ๋ฉด ๋ ๋น ๋ฅธ ํ์ด๊ฐ ๊ฐ๋ฅํ๋ค.
'Algorithm > Algorithm (๋ฌธ์ ํ์ด)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 4375 1 (0) | 2022.11.17 |
---|---|
[๋ฐฑ์ค] 1629 ๊ณฑ์ (0) | 2022.11.12 |
[๋ฐฑ์ค] 18870 ์ขํ ์์ถ (0) | 2022.11.01 |
[๋ฐฑ์ค] 12100 2048 (Easy) (0) | 2022.10.28 |
[๋ฐฑ์ค] 14891 ํฑ๋๋ฐํด (0) | 2022.10.25 |