요구능력 : 경우의수를 전부따지는 브루트포스 알고리즘에 대해 알고있느냐
코드설명 :
우리가 구하고자 하는 수는 n이 256이면 256의 생성자 245이다.
245가 생성자인 이유는 245 + 2 + 4 + 5 = 256 이기 때문이다.
1. n으로 생성자를 구할 수를 받는다.
2. 1 ~ n 까지 수를 245 + 2 + 4 + 5 = 256 이 방법으로 n이 되는 경우를 찾기위해 쭉 돌린다.
3. 드디어 생성자구하는 방법으로 i로 인해 생성자가 구해지면 (sum == n이 되면) i가 생성자 수가되니까 출력해준다.
break해주는 이유는 가장작은 생성자를 구하라고 했기 때문이다.
맨 처음에 sum == n이 성립되면 그게 가장작은 수이다.
4. 만약 sum == n이 성립되지 않으면 생성자가 없다는 말이다. 그렇다면 realI는 0인 채로 존재할 것이다.
그 때는 0을 출력해주고 아닌경우에는 realI를 출력해주어 생성자를 출력해준다.
후기 : 무난하게 전체경우의수를 따져본다고 생각하며 풀었다.
let n = Int(readLine()!)!
var sum = 0
var realI = 0
for i in 1...n { //1번
sum = i
for j in String(i) { //2번
sum += Int(String(j))!
}
if sum == n { //3번
realI = i
break
}
}
if realI == 0 { //4번
print("0")
}else {
print("\(realI)")
}
'Algorithm > 문제풀이_백준' 카테고리의 다른 글
Swift) 백준 1436번 (영화감독 숌) (0) | 2021.08.20 |
---|---|
Swift) 백준 7568번 (덩치) (0) | 2021.08.19 |
Swift) 백준 2798번 (블랙잭) (0) | 2021.08.18 |
Swift) 백준 11729번 (하노이 탑) (0) | 2021.08.17 |
Swift) 백준 1002번 (터렛) (0) | 2021.08.16 |
댓글