[문제]
https://www.acmicpc.net/problem/3649
[해설]
들어가기 앞서 이 문제는 삽질을 강제로하게 만들었다.
입력은 여러 개의 테스트 케이스로 이루어져 있다. <- 이 키워드 때문에 여러 테스트 케이스를 받아야 한다.
그것 외에는 간단한 투 포인터 문제였다.
풀이 과정은 아래와 같다.
- 레고 길이를 배열 arr에 저장하고, 정렬을 한다.
- i = 0, j = [레고 배열의 크기 - 1] 로 선언하고, i < j 이면 아래의 과정을 반복한다
- arr[i] + arr[j] 가 막아야할 구멍의 크기와 같다면 반복을 멈춘다
- arr[i] + arr[j] 가 구멍의 크기보다 작다면, i++ 를 해준다.
- arr[i] + arr[j] 가 구멍의 크기보다 크다면, j-- 를 해준다.
[코드]
import java.util.Scanner
var x = 0
fun main()
{
var br = Scanner(System.`in`)
while(br.hasNext())
{
val x = br.nextInt() * 10000000
val size = br.nextInt()
var arr = arrayListOf<Int>()
repeat(size)
{
arr.add(br.nextInt())
}
arr.sort()
var i = 0
var j = size-1
var find = false
while(i < j)
{
val tmp = arr[i] + arr[j]
if(tmp == x) {
find = true
println("yes ${arr[i]} ${arr[j]}")
break
}
else if(tmp < x) i++
else j--
}
if(!find) println("danger")
}
}
'백준 > 투 포인터' 카테고리의 다른 글
백준 [2473] kotlin (0) | 2023.07.22 |
---|---|
백준 [1644] - kotlin (0) | 2023.06.27 |
백준 [2467] kotlin (0) | 2023.01.12 |
백준 [2493] kotlin (0) | 2023.01.11 |
백준 [20437] kotlin (0) | 2023.01.10 |