반응형
문제
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을 배열로 쪼갰을 때 그 안의 수들을 내림차순으로 정렬하여 조합하면 그 값이 가장 큰 값이 된다.
반응형
'⚙️ 알고리즘 > 백준' 카테고리의 다른 글
[Swift] 백준 1080 - 행렬 (0) | 2023.01.27 |
---|---|
[Swift] 백준 1541 - 잃어버린 괄호 (0) | 2023.01.26 |
[Swift] 백준 2895 - 대회 or 인턴 (0) | 2023.01.26 |
[백준/파이썬] 2869 - 달팽이는 올라가고싶다 (0) | 2021.04.25 |
[백준] 2217 - 로프 (다시풀기) (0) | 2021.03.04 |