백준 11657번 통나무 건너뛰기 Kotlin

: ) YOUNG·2025년 1월 30일
1

알고리즘

목록 보기
443/458
post-thumbnail

백준 11657번 통나무 건너뛰기 Kotlin

https://www.acmicpc.net/problem/11657

문제



생각하기


  • 그리디 알고리즘

  • 정렬



동작

정렬한 뒤 각 값을, 좌 우로 분배하면 된다.





결과


코드


import java.io.*
import java.util.Arrays
import java.util.StringTokenizer

// input
private var br = System.`in`.bufferedReader()

// variables

fun main() {
    val bw = System.out.bufferedWriter()

    val t = br.readLine().toInt()
    repeat(t) {
        bw.write(solve())
    }

    bw.close()
} // End of main()

private fun solve(): String {
    val sb = StringBuilder()

    val N = br.readLine().toInt()
    val st = StringTokenizer(br.readLine())
    val arr = IntArray(N) {
        st.nextToken().toInt()
    }

    Arrays.sort(arr)
    val que = ArrayDeque<Int>()
    for (i in 0 until N) {
        if (i % 2 == 0) {
            que.addLast(arr[i])
        } else {
            que.addFirst(arr[i])
        }
    }

    var max = Math.abs(que.last() - que.first())
    var pre = que.removeFirst()
    repeat(N - 1) {
        val temp = que.removeFirst()
        max = Math.max(max, Math.abs(temp - pre))
        pre = temp
    }

    sb.append(max).append('\n')
    return sb.toString()
} // End of solve()

0개의 댓글

관련 채용 정보