https://www.acmicpc.net/problem/1003
풀이
더보기
0이면 (1 0)
1이면 (0 1)
2부터 0 + 1 => (1 1)
3이면 1 + 2 => 1 + 1 + 0 => (1 2)
4이면 3 + 2 => 2 + 1 + 1 + 0 => 1 + 0 + 1 + 1 + 0 => (2 3)
이 규칙을 보면 이전의 0, 1값과 전전의 0, 1값을 더하면 해당 결과가 나온다.
즉, 변수에 전값과 전전값을 저장해놓고 더하고, 반복문이 반복되는 동안 변수를 업데이트 하면서 마지막 값에 결과를 도출한다.
import java.io.BufferedReader
import java.io.InputStreamReader
fun main(args: Array<String>) {
question1003()
}
fun question1003() {
var reader = BufferedReader(InputStreamReader(System.`in`))
var case = reader.readLine().toInt()
var previous0 = 0;
var previous1 = 0;
var result0 = 0;
var result1 = 0;
for(i in 1 .. case){
var testCase = reader.readLine().toInt()
for(i in 0 .. testCase) {
if(i == 0) {
result0 = 1
result1 = 0
} else if(i == 1) {
previous0 = result0
previous1 = result1
result0 = 0
result1 = 1
} else {
var beforeResult0 = result0
var beforeResult1 = result1
result0 += previous0
result1 += previous1
previous0 = beforeResult0
previous1 = beforeResult1
}
if(i == testCase) {
println("$result0 $result1")
}
}
}
}
반응형
'스터디(beakjoon)' 카테고리의 다른 글
Kotlin] 백준 2557번 문제 풀이 (0) | 2023.03.07 |
---|---|
Kotlin] 백준 1004번 문제 풀이 (0) | 2023.01.18 |
Kotlin] 백준 1002번 문제풀이 (0) | 2023.01.16 |
Kotlin] 백준 1001번 문제 풀이 (0) | 2023.01.16 |
Kotlin] 백준 1000번 문제 풀이 (0) | 2023.01.16 |