⚙️ 알고리즘/백준
[Swift] 백준 10610 - 30
dev_zoe
2023. 1. 26. 00:29
반응형
문제
https://www.acmicpc.net/problem/10610
코드
let input = readLine()!.map{ String($0) } //쪼개서 정수 배열로 저장
var sum = 0
if !input.contains("0"){
print(-1)
}
else{
for i in input {
sum += Int(i)!
}
if sum%3 == 0 {
print(input.sorted(by: >).joined())
}
else{
print(-1)
}
}
풀이
30의 배수임을 판별하기 위해서는 끝이 0이 아닌지와 각 자릿수를 더한 값이 3의 배수인지를 판별하면 된다.
따라서 input에 0이 들어가있지 않으면 30의 배수가 아니므로 바로 -1을 프린트해주었고,
다 더했을 때 3의 배수이면 수를 내림차순으로 정렬하여 조합한 값을 print 해주었다.
여기서 최대값이 내림차순한 값과 일치하는 이유는, 어차피 30의 배수를 만족한다면 이를 정렬해도 만족하기 때문에,
input을 배열로 쪼갰을 때 그 안의 수들을 내림차순으로 정렬하여 조합하면 그 값이 가장 큰 값이 된다.
반응형