[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으로

좀 더 간결하게 할 수 있습니다.

 

■ 실행 결과

 

 

 

 

반응형

BELATED ARTICLES

more