⚙️ 알고리즘/백준

[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을 배열로 쪼갰을 때 그 안의 수들을 내림차순으로 정렬하여 조합하면 그 값이 가장 큰 값이 된다.

 

반응형