728x90
https://www.acmicpc.net/problem/9095
문제 접근
주어진 정수를 1,2,3의 합으로 나타내는 경우의 수를 구하는 문제
주어진 정수를 1,2,3으로 쪼개는 경우의 수 :: 재귀를 통해 구현
재귀함수의 구성요소는 다음과 같다.
1. 다음 경우를 호출
2. 정답을 찾은 경우 return
3. 불가능한 경우 return(문제의 조건을 위배한 경우, 절대로 답을 구할 수 없는 경우)
정답 코드
import java.util.Scanner
fun main(args: Array<String>): Unit = with(Scanner(System.`in`)) {
val m = nextInt()
for (i in 0 until m){
val n = nextInt()
println(repeat(0, n))
}
}
//입력값과 중간값을 받아 둘이 같으면 정답을 찾은걸로 간주
fun repeat(sum:Int, n:Int): Int{
if (sum > n) return 0 //답을 더이상 못찾는 경우
if (sum == n) return 1 //답을 찾은 경우
var count = 0
for (i in 1..3){
count += repeat(sum+i, n)
}
return count
}
'알고리즘 > 백준 문제풀이' 카테고리의 다른 글
백준-1018(체스판 다시 칠하기, python) (0) | 2023.05.23 |
---|---|
백준 14501- 퇴사(kotlin) (0) | 2023.02.08 |
백준 2606-바이러스(Kotlin) (0) | 2023.02.06 |
백준 1260-DFS와 BFS(Kotlin) (0) | 2023.02.05 |
백준 2576 색종이-2(Kotlin) (0) | 2023.02.02 |