티스토리 뷰

반응형

https://www.acmicpc.net/problem/10610

 

10610번: 30

어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한

www.acmicpc.net


⊙ 문제

⊙ 입력

⊙ 출력

⊙ 예제 입출력

⊙ 알고리즘 분류

  • 수학
  • 문자열
  • 정렬
  • 정수론

 


 

⊙ 문제 접근 과정

 

이런 문제는 수학만 잘하면 엄청 쉬운 문제라고 생각한다.

30의 배수 조건은 그냥 각 자리 수를 다 더했을 때, 3으로 나누어 떨어지고 일의 자리수가 0이면 된다.

 

아래는 위 공식에 대한 코드다.


 

⊙ 문제 풀이

 

N = list(input())
N.sort(reverse=True)

sum = 0

for i in N:
    sum += int(i)

if sum % 3 == 0 and '0' in N:
    print(''.join(N))
else:
    print(-1)

 


⊙ 결과

 


⊙ 마무리

 

 

알고리즘을 해결할 때, 기본적인 수학상식이 있으면 도움이 많이 된다.

 

좋아요는 로그인하지 않아도 누를 수 있습니다!

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함