Kotlin/Kotlin 알고리즘

백준 25642번 젓가락 게임

kimc 2022. 10. 4. 21:04

```

백준 25642번 젓가락 게임 

```

Kimc Kotlin Study

이번 글을 통해 배워갈 내용

  1. 백준 25642번 풀이

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

 

25642번: 젓가락 게임

용태와 유진이가 게임을 플레이했을 때 용태가 이기게 된다면 yt 를, 유진이가 이긴다면 yj 를 출력한다.

www.acmicpc.net

백준 25642번 젓가락 게임은

 

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

 

한 손에 5개의 손가락을 가진 사람이 1부터 4개까지 손가락을 한 손에 피고 있고

다른 사람도 동일하게 피고 있는 경우

다른 사람의 손가락을 치는 경우 현재 공격자의 손가락만큼 방어자의 손가락에 개수를 더하고

더한수가 5이상인 경우 공격자가 승리한다고 가정하고

yt라는 사람이 선공 yj가 후공일 때

주어진 손가락을 토대로 승자를 구하는 문제입니다.

 


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

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


피보나치 수열이 생각났습니다

a3 = a2 + a1

이를 이용해서 쉽게 푼 풀이는 아래와 같습니다.

 

fun main(args: Array<String>) {
    val (yt, yj) = readln().split(" ").map { it.toInt() }
    println(findWinner(yt, yj))
}

fun findWinner(yt: Int, yj: Int): String {
    val kMaxTry = 5
    var prev1 = yj
    var prev2 = yt
    var isYtWinner = true
    for (i in 0..kMaxTry) {
        val prev3 = prev1 + prev2
        if (prev3 >= 5) {
            break
        }
        isYtWinner = !isYtWinner
        prev1 = prev2
        prev2 = prev3
    }
    return if (isYtWinner) {"yt"} else {"yj" }
}
// https://codemasterkimc.tistory.com/

 

 

읽어주셔서 감사합니다

 

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

 

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

 


 

728x90