[문제]
https://www.acmicpc.net/problem/3273
[코드]
private var n = 0
private lateinit var arr : IntArray
private var x = 0
private lateinit var subs : BooleanArray
fun main() {
val br = System.`in`.bufferedReader()
n = br.readLine().toInt()
arr = br.readLine().split(" ").map { it.toInt() }.toIntArray()
x = br.readLine().toInt()
subs = BooleanArray(x+1){false}
var result = 0
for(i in 0 until n){
if(arr[i]>=x) continue
if(subs[x-arr[i]])
result += 1
subs[arr[i]] = true
}
println(result)
}
[풀이]
배열을 이용하여 풀었다.
크기가 x+1 인 BooleanArray를 만들고 (코드상에선 subs)
n개의 정수들이 담긴 arr를 for문으로 도는데
subs[arr[i]] 의 값을 true로 하여 현재 정수 값을 표시하고
만약 이전에 x-arr[i] 가 이미 나왔다면 subs[x-arr[i]]값이 true이기 때문에 result 를 1씩 늘려준다.
해당 정수 값이 x보다 크거나 같으면 두 수의 합이 x보다 크므로 continue를 이용해서 바로 넘긴다.
Github : https://github.com/eshc123/2021AlgorithmStudy/blob/main/src/main/PS/baekjoon/3273.kt
'Algorithm and PS > 백준(Kotlin)' 카테고리의 다른 글
백준 - 1600 말이 되고픈 원숭이 (코틀린) (0) | 2022.01.05 |
---|---|
백준 - 6198 옥상 정원 꾸미기 (코틀린) (0) | 2021.12.30 |
백준 - 1874 스택 수열 (코틀린) (0) | 2021.05.26 |
백준 - 10773 제로 (코틀린) (0) | 2021.05.24 |
백준 - 10828 스택 (코틀린) (0) | 2021.05.24 |
댓글