반응형
https://www.acmicpc.net/problem/1065
x가 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다.
입력값 -> n / 1 <= .. <= n 한수의 갯수 출력
한 자리수 : 1 ~ 9 -> 길이가 1인 등차수열 / 모든 수 가 한수
두 자리수 : 10, 11, 12, 13, 14, 15, ... 99 -> 길이가 2인 등차수열
따라서 90개 모두 다된다.
세 자리수 : 위의 형식처럼 진행이 된다.
ex)
1: 숫자 하나이므로 등차수열
2: 같은경우
3: 같은경우
..
10: 길이 2 / 1 0 인 수열 -> 등차수열o
11: 길이 2 / 1 1 인 수열 -> 등차수열o
..
100: 길이 3 / 1 0 0 인 수열 -> 등차수열x
101: 길이 3 / 1 0 1 인 수열 -> 등차수열x
..
123: 길이 3 / 1 2 3 인 수열 -> 등차수열o
이런식으로 진행이 되는것이다.
fun main(){
var n : Int = readLine()!!.toInt()
var arr = IntArray(1001)
var ans : Int = 0
for (i in 1 .. 9){
for (j in 0..9){
for(k in 0..9){
if ( i- j == j - k){
arr[get_hundred(i,j,k)] = 1
}else{
arr[get_hundred(i,j,k)] = 0
}
}
}
}
if(n <= 99) {
println("$n")
} else{
for(i in 100 .. n){
if(arr[i] == 1) ans++
}
println("${ans + 99}")
}
}
fun get_hundred(a:Int, b:Int, c:Int) :Int{
return (100 * a + b *10 + c)
}
조금은 특이한 방식으로 진행해 보았다.
약간이 아니라 아주 하드코딩적인 방식. 99이하일때는 입력한 값 출력
그리고 100이상일때는 등차수열을 이루면 1로 저장해놓고 나중에 합쳐서 출력하는 형태로 진행을 하였다.
그리고 코틀린은 아주그냥 이중, 삼중 배열을 쓰기가 너무 싫어서 그냥 한 배열을 진행을 진행해봤다.
반응형
'Android & Kotlin > Kotlin Algorithm' 카테고리의 다른 글
[코틀린] 백준 1010번 다리놓기 (0) | 2022.11.12 |
---|---|
[dfs] 백준 2606 코틀린 : 바이러스 (0) | 2022.11.12 |
[백준 코틀린] 2775번 : 부녀회장이 될테야 (0) | 2022.11.11 |
[백준 코틀린] 10814 : 나이순정렬 (0) | 2022.11.11 |
[백준 코틀린] 2750번 : 수 정렬하기 (0) | 2022.11.11 |
댓글