엄코딩의 개발 일지

문제)


숫자 3과 9는 재미있는 성질이 있습니다. 3의 배수의 각 자릿수의 합은 다른 3의 배수가 됩니다.

예를 들어 118 * 3 = 354이고 3+5+4=12는 3의 배수입니다. 마찬가지로 9의 배수의 각 자릿수의 합은 다른 9의 배수가 됩니다. 

예를 들어 75 * 9=675이고 6+7+5=18은 9의 배수입니다.


어떤 진법에서 이러한 성질을 갖는다고 다른 진법에서 이러한 성질을 가지지는 않습니다. 예를 들어 10진수에서 3은 이러한 성질을 가지지만 5진수에서는 성립하지 않습니다.


base 진법이 주어졌을 때 이러한 성질을 가진 수를 오름차순으로 모두 리턴하세요.(다만 0과 1은 제외합니다). 어떤 수가 이러한 성질을 가지는지 알고자 모든 숫자의 곱을 고려할 필요는 없습니다. 만약 4자리 미만의 곱으로 성립되면 더 큰 자리에서도 성립된다 할 수 있습니다.

예를 들어 10진수에서는 999보다 큰 숫자를 고려하지 않아도 됩니다.







** 이 문제의 핵심은 1과 base의 차가 n으로 나누어 떨어지면 어떤 자릿수라도 base로 나눈 나머지가 동일하다는 것이였다. **



Vector는 ArrayList와 동일한 내부 구조를 가지고있다. Vector를 생성하기 위해서는 저장할 객체 타입을 타입 파라미터로 표기하고 기본 생성자를 호출하면 된다.

Vector이 ArrayList와 다른 점은 Vector는 동기화된(synchronuzed) 메소드로 구성되어 있기 때문에 멀티스레드가 동시에 이 메소드들을 실행할 수 없고, 하나의 스레드가 실행을 완료해야만 다른 스레드를 실행할 수 있다.

그래서 멀티 스레드 환경에서 안전하게 객체를 추가, 삭제할 수 있다.

이것을 스레드가 안전(Thread Safe)하다라고 말한다.



[자료 출처 & 참고 문헌]


이것이 자바다


TopCoder 알고리즘 트레이닝