티스토리 뷰

Algorithm

swift 백준 1065

강경 2021. 1. 5. 16:12
728x90
반응형



// 숫자N을 입력받는다
let endRange = Int(readLine()!)!

// 한수의 개수
var count = 0

// 한수의 개수를 센다
for num in 1...endRange {
    let numbers = Array("\(num)")
    var commonDifference = 10
    var isArithmeticalSequence = true
    
    for (index, _) in numbers.enumerated() {
        // 끝에 도달하면 종료한다
        if index == numbers.count - 1 {
            commonDifference = 10
            break
        }
        
        if commonDifference == 10 {
            commonDifference = getCommonDifference(array: numbers, index: index)
        } else {
            if commonDifference != getCommonDifference(array: numbers, index: index) {
                isArithmeticalSequence = false
                commonDifference = 10
                break
            }
        }
    }
    
    if isArithmeticalSequence {
        count += 1
    }
}

print(count)

// 공차를 구한다
func getCommonDifference(array: [Character], index: Int) -> Int {
    return Int(String(array[index + 1]))! - Int(String(array[index]))!
}

1~9는 항상 아니라고 생각했는데, 항상 맞다는 사실에 놀랐다. (예제 출력에 1이 없었으면 틀렸을 것이다 ..)

공차를 영어로 표현하면 뭐가되는지 몰랐는데, 생각보다 단순한 단어라서 놀랐다.

'끝에 도달하면 종료한다' 저 부분을 좀 더 깔끔하게 고치고싶은데

방법이 딱! 하고 떠오르질 않는다 ... 저건 좀 더 고민을 해봐야 할 부분이다.

 

www.acmicpc.net/problem/1065

 

1065번: 한수

어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나

www.acmicpc.net

 

728x90
반응형

'Algorithm' 카테고리의 다른 글

swift 백준 4673  (0) 2021.01.05
swift 백준 4344  (0) 2020.12.28
swift 백준 8958  (0) 2020.12.28
swift 백준 1546  (0) 2020.12.28
swift 백준 3052  (0) 2020.12.28