[PS] BOJ 10610번 30

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

Silver 5 라는 난이도 보다는 체감상 어려웠던 문제이다.

이 문제를 풀면서, 30의 배수를 어떻게 빠른 시간내에 판단할 수 있을까를 고민했다.

30의 배수는 3의 배수이면서 10의 배수인지를 판단하면 되는데, 

10의 배수를 판단하는 방법은 0이 하나라도 있는지 보면 알 수 있어서 간단했다.

3의 배수가 관건이었는데, 3의 배수는 각 자릿수의 합을 다 더해도 3의 배수꼴로 나타난다.

이렇게 주어진 수가 30의 배수임을 알게 되면, 내림차순으로 정렬해도 30의 배수가 된다.

추가적으로 이 문제를 풀면서, 각 자릿수의 합이 어떤 규칙을 갖는지 알아보았다.


3 6 9 12 15 18 21 24 27 30...

3 6 9 3 6 9 3 6 9... (각 자리수의 합이 3의 배수꼴로 나타남)


9 18 27 36 45 54 63 72 81 90... 162...  6147

9 9 9 9 9 9 9 9 9... (각 자리수의 합이 9의 배수꼴로 나타남)


3, 9가 이러한 문제로 응용될 수 있겠다.

생각해보면, 90의 배수는 9의 배수와 10의 배수를 만족시켜야 한다.

그런데 9의 배수는 3의 배수이므로 저 문제에서 주어진 30이라는 수를 구했던 방법처럼

구할 수 있다.


이 방법 외에도 시간 내에 풀 수 있는 방법이 있는지 궁금하다. 

:)


댓글

이 블로그의 인기 게시물

[PS] BOJ 20543번 폭탄 던지는 태영이

프로그래밍에서 실수형의 부정확성

프로그래머스 2019 윈터코딩 온라인 테스트를 보았다. (풀이)