https://www.acmicpc.net/problem/4673
백준 4673번 셀프 넘버 문제 링크입니다.
핵심
1부터 10000까지의 정수 중에서 셀프 넘버를 찾는 것입니다. boolean타입의 배열을 사용하는 것입니다.
정답 코드
public class Main {
public static void main(String[] args) {
boolean[] check = new boolean[10001];
for (int i = 1; i <= 10000; ++i) {
int k = dn(i);
if (k <= 10000) {
check[k] = true;
}
}
for (int i = 1; i < check.length; ++i) {
if (!check[i]) {
System.out.println(i);
}
}
}
private static int dn(int m) {
int c = m;
while(m > 0) {
c += m % 10;
m /= 10;
}
return c;
}
}
해설
우리가 원하는 것은 셀프 넘버만을 출력하는 것이다.
1~10000까지의 양의 정수를 함수 dn에 넣는다.
함수 dn은 원래 값에서 각 자리 수를 더한 값이 나오게 되는데,
이때 나온 값이 10000보다 작으면
true로 변경시켜준다.
모든 반복이 끝나면 check배열은 셀프 넘버인 false값이 남아있게 된다.
따라서 배열의 false 값을 출력하면 된다.
개선점이나 오류가 있다면, 댓글로 알려주시면 감사하겠습니다.
'PS > 알고리즘 문제풀이' 카테고리의 다른 글
[백준]2108번 통계학(java) (1) | 2022.07.04 |
---|---|
[백준]2581번 소수(java) (0) | 2022.07.04 |
[백준]2838번 설탕 배달(java) (2) | 2022.07.04 |
[백준]10757번 큰수A+B(java) (0) | 2022.07.04 |
[백준] 1316번 그룹단어 체커(java) (0) | 2022.07.04 |