Kotlin/Kotlin 알고리즘

백준 25904번 Kotlin 구현해보기

kimc 2022. 11. 19. 12:21

```

백준 25904번 안녕 클레오파트라 세상에서 제일가는 포테이토칩 Kotlin 구현해보기

```

Kimc Kotlin Study

이번 글을 통해 배워갈 내용

  1. 백준 25904번 풀이

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

 

25904번: 안녕 클레오파트라 세상에서 제일가는 포테이토칩

"안녕 클레오파트라 세상에서 제일가는 포테이토칩"은 이전 사람보다 높은 목소리로 🎵 안녕 클레오파트라 세상에서 제일가는 포테이토칩🎵 을 외치는 게임이다. $1$번부터 $N$번까지의 사람이

www.acmicpc.net

 

백준 25904번 안녕 클레오파트라 세상에서 제일가는 포테이토칩은

난이도 브론즈 등급의 문제로서

 

N명이 원으로 서있고

순서대로 소리를 냅니다.

처음으로 내는 소리가 X 라면 X + 1 , 2 ,3으로 계속 소리 크기가 증가합니다

각 사람이 낼수있는 최대 소리 목록이 주어질 때

최초로 해당 순서에 소리 크기 이상 내지 못하는 사람을 구해주면 됩니다.


30분 정도 위에 링크를 방문하셔서 풀어보시고

안 풀리시는 경우에만 아래 해답을 봐주시면 감사하겠습니다.


입력을 받고

정해진 조건에 맞춰서

리스트를 돌면서

해당되는 순서에 크기보다 크다면 loop를 break 하고

해당되는 사람에 순서를 출력했습니다.

fun main(args: Array<String>) {
    // input
    val input01 = readln().split(" ")
    val n = input01[0].toInt()
    val x = input01[1].toInt()
    val tList = readln().split(" ").map { k -> k.toInt() }
    // output
    print(solution(n, x, tList))
}

// n : number of participant
// x : voice strength unit
// tList : voice strength of each participant in sequence
fun solution(n: Int, x: Int, tList: List<Int>): Int {
    val kMaxTry = 200
    var mod = x
    var ans = -1

    outerLoop@
    for (idx1 in 0..kMaxTry) {
        for (idx2 in 0 until n) {
            if (idx2 + mod > tList[idx2]) {
                ans = idx2 + 1
                break@outerLoop
            }
        }
        mod += n
    }
    return ans

}


// https://codemasterkimc.tistory.com/

 

테스트

import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Test

internal class MainKtTest {

    @Test
    fun test() {
        assertEquals(2, solution(3, 3, listOf(8, 6, 5)))
        assertEquals(1, solution(4, 5, listOf(4, 10, 9, 8)))
    }
}

 

 

읽어주셔서 감사합니다

 

무엇인가 얻어가셨기를 바라며

 

오늘도 즐거운 코딩 하시길 바랍니다 ~ :)

 


 

728x90