<C>#include <stdio.h>#define N 10001 // 배열 arr[1 ~ 10000] 까지 이므로 10001int arr[N];int solution(int n) {int sum = n; // 자기 자신을 먼저 더해주고while(1) { // 각 자리수의 숫자를 더해야하므로 1의 자리를 계속 더해준다.if (n == 0) break; // 0이 되면 breaksum += n%10; // 1의 자리 더해주기n = n/10; // 한자리씩 없애기}return sum;}int main(void) {for (int i=1; i<N; i++) {int idx = solution(i);if (idx <= N) {arr[idx] = 1; // 셀프넘버 아닌 수 true 로 변경}}for (int i=1; i<N; i++) {if(!arr[i]) printf("%d\n", i);}return 0;}<JAVA>import java.io.IOException;public class Main {static boolean arr[] = new boolean[10000];public static void main(String[] args) throws IOException {for (int n=1; n<10000; n++) {int idx = solution(n);if (idx < 10000)arr[idx] = true;if (!arr[n]) System.out.println(n);}}public static int solution(int n) {int sum = n;while(true) {if (n==0) break;sum += n%10;n = n/10;}return sum;}}
백준 - 셀프넘버(4673번)
코딩테스트카테고리의 다른글
해커랭크(SQL) - New Companies (0) | 2020.09.07 |
---|---|
입력받은 숫자를 우리가 읽는소리로 출력하는 코드를 작성하시오. (0) | 2019.01.07 |
온코더 - 13구하기 (0) | 2018.12.21 |
프로그래머스 - 완주하지 못한 선수(Level 1) (0) | 2018.11.26 |
프로그래머스 - 소수의 합(Level 1) (0) | 2018.11.13 |