티스토리 뷰
https://www.acmicpc.net/problem/9655
문제 설명
돌 게임은 두 명이서 즐기는 재밌는 게임이다.
탁자 위에 돌 N개가 있다. 상근이와 창영이는 턴을 번갈아가면서 돌을 가져가며, 돌은 1개 또는 3개 가져갈 수 있다. 마지막 돌을 가져가는 사람이 게임을 이기게 된다.
두 사람이 완벽하게 게임을 했을 때, 이기는 사람을 구하는 프로그램을 작성하시오. 게임은 상근이가 먼저 시작한다.
입력
첫째 줄에 N이 주어진다. (1 ≤ N ≤ 1000)
출력
상근이가 게임을 이기면 SK를, 창영이가 게임을 이기면 CY을 출력한다.
예제 입력 1
5
예제 출력 1
SK
분류
풀이
참고 블로그: https://beginnerdeveloper-lit.tistory.com/83
n=1 부터 n=10까지 해보면서 다이나믹 프로그래밍으로 풀 생각을 못했다..! 블로그 풀이보고 DP 로 해결..!
코드
val dp = Array(1002){0}
fun min(a: Int, b: Int) = if (a > b) b else a
fun calcDP(n: Int) : Int {
dp[1] = 1
dp[2] = 2
dp[3] = 1
for (i in 4..n) {
dp[i] = min( dp[i-1] + 1, dp[i-3] + 1)
// println("dp[$i]: ${dp[i]}")
}
return dp[n]
}
fun main(args: Array<String>) {
val n = readLine()?.toInt()
val res = calcDP(n!!)
// println("res: $res")
println(if (res % 2 == 0) "CY" else "SK" )
}
'IT > Algorithm' 카테고리의 다른 글
TODO [백준 1520] 내리막 길 | KOTLIN (1) | 2023.11.04 |
---|---|
[백준 2579] 계단 오르기 | KOTLIN (1) | 2023.10.09 |
[백준 4344] 평균은 넘겠지 | KOTLIN (1) | 2023.10.08 |
[백준 2605] 줄 세우기 | KOTLIN (0) | 2023.03.13 |
[백준 10989] 수 정렬하기 3 | KOTLIN (0) | 2023.02.14 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- InShot
- 알고리즘
- 안드로이드
- https://kotlinlang.org/docs/object-declarations.html
- 수학 #다이나믹프로그래밍 #게임이론
- 청년내일채움공제
- Vlogr
- 아이폰영상편집어플후기
- VLLO
- 내채공
- TKD
- AdobeClip
- EH
- 디자인패턴
- 프로그래머스
- Kotlin
- Repository pattern
- 통신패턴
- 내채공만기
- 쇼코의미소
- 코딩테스트
- 레포지토리패턴
- 맥북개발환경
- gitlab_ssh_permission_denied
- 동기메시징기술
- android
- 코틀린
- 클라우드 네이티브 애플리케이션 디자인 패턴
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함