본문 바로가기

Algorithm

[백준] 함수

728x90

[함수] 단계에서는 문제가 3개밖에 없어서 기록용으로 정리 ..

 

4673번

입력) 입력은 없다.
출력) 10,000보다 작거나 같은 셀프 넘버를 한 줄에 하나씩 증가하는 순서로 출력한다.

 

소깡이 풀이

import Foundation

func calculateDNumber(value: Int) -> Int {
    let dNumber = value + (value / 10000) + (value % 10000 / 1000) + (value % 1000 / 100) + (value % 100 / 10) + (value % 10)
    return dNumber
}

var arr: [Int] = []
var total: [Int] = []

for i in 0...10000 {
    total.append(i)
    arr.append(calculateDNumber(value: i))
}

let setArr = Set(arr)
let setTotal = Set(total)

let result = setTotal.subtracting(setArr).sorted(by: <)
print(result.map { String($0) }.joined(separator: "\n"))

 

먼저 dNumber를 계산하는 함수를 만들고 1부터 10,000까지의 수 중에서 dNumber를 계산해서 dNumber를 [Int] 배열에 넣는다.

그리고 1부터 10,000까지의 수를 [Int] 배열로 만들고 

이 두 배열을 Set으로 바꾼 다음에 차집합을 계산한다.

 

그리고 차집합에 해당하는 숫자들을 오름차순으로 계산해서 출력하면 끝! 

 

 

'Algorithm' 카테고리의 다른 글

[알고리즘] DFS 구현  (0) 2022.09.29
[알고리즘] BFS 구현  (0) 2022.09.28
[백준] 1712번: 손익분기점  (1) 2022.09.21
[백준] 상수  (0) 2022.09.11
[백준] 1157번: 단어 공부  (0) 2022.09.11