언어/JAVA
[JAVA] 5000보다 작은 셀프 넘버들의 합 구하기
푱푱이
2023. 3. 26. 07:07
반응형
■ 문제
10년도 더전에 넥슨 입사문제 였다고 합니다 : D
어떤 자연수 n이 있을때,
d(n)을 n의 각자릿수 숫자와 n자기 자신을 더한 숫자라고 정의하자
예를 들어
이때 n(*여기서는 91) 을 101의 제너레이터(generator) 라고한다.
어떤 숫자들은 하나이상의 제너레이터를 가지고 있다.
101의 제너레이터는 91 , 100 이다.
반대로 없는 수도 있는데 이를 셀프 넘버 (self - number)라 한다.
예를 들어 1,3,5,7,9,20,31 은 셀프 넘버 이다.
1 이상 5000 미만인 모든 셀프넘버의 합을 구하라.
직접 생각해 보는 게 중요합니다.
정확하게 답을 못 내더라도
어떻게 해야 할까
가볍게라도 생각하고
답안 참고해 주세요!!
■ 예시 답안
boolean 배열을 1부터 5000까지 생성 후
제너레이터인 경우 값을 true로 합니다.
r = 1000 +100 +10 +1 의 자리 + 자기 자신
배열에서 false 인 수가
셀프 넘버이므로
sum에 더해줍니다.
처음에는 배열두 개 생성해서
1부터 5000까지 모든 값을 넣고
동일한 값 remove로
삭제하는 식으로 생각했었는데
숫자를 이용한 문제니까 boolean으로
좀 더 간결하게 할 수 있습니다.
■ 실행 결과
반응형