곽로그
[백준 4673] 셀프 넘버 본문
반응형
접근법
불린배열을 생각했다. n을 입력해서 d(n)을 구한다. 그러면 불린배열에서 인덱스가 d(n)인 요소의 값을 true로 바꾼다. (불린 배열을 선언하면 fasle로 초기화 되기 때문이다) 따라서 위의 작업이 다 끝난 후에 배열의 값이 false인 인덱스 값을 출력하면 그것이 셀프넘버가 된다.
주의점
여기서 d(n)을 구하는 함수를 어떻게 정의할 것인지가 중요한데, 처음에는 if-else를 이용해서 2자리일 때, 3자리일 때, 4자리 일때를 나눠서 d(n)의 값을 구했다. 그것보다 더 간단한 코드는 while문을 이용해서 10으로 나눈 나머지를 더해가는 방법이다.
public class Main {
public static int noSelfNumber(int num) {
int newN=num;
while(num>0) {
newN+=num%10;
num/=10;
}
return newN;
}
public static void main(String[] args) {
boolean[] noSelfNumberA=new boolean[10000];
//배열을 선언하면 false로 초기화 되기 때문에 헷갈리지 않게 배열의 이름에 no를 붙임
for(int i=0;i<noSelfNumberA.length;i++) {
if(noSelfNumber(i)<10000) {
noSelfNumberA[noSelfNumber(i)]=true;
}
}
for(int i=1;i<noSelfNumberA.length;i++) {
if(!noSelfNumberA[i]) {
System.out.println(i);
}
}
}
}
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준 2577] 숫자의 개수 (0) | 2019.04.22 |
---|---|
[백준 1065] 한수 (0) | 2019.04.19 |
[백준 1110] 더하기 사이클 (0) | 2019.04.18 |
[백준 4344] 평균은 넘겠지 (0) | 2019.04.17 |
[백준 1546] 평균 (0) | 2019.04.17 |
Comments