입력 코드
#include <stdio.h>
int SelfNumber(int n) {
int sum = n;
while (1) {
if (n == 0)
break;
sum += n % 10;
n = n / 10;
}
return sum;
}
main() {
int i = 1, temp;
int arr[10001] = { 0, };
for (i = 1; i < 10001; i++) {
temp = SelfNumber(i);
if (temp < 10001)
arr[temp] = 1;
}
for (i = 1; i < 10001; i++) {
if (arr[i] != 1)
printf("%d\n", i);
}
return 0;
}
코드 설명
배열과 반복문, 조건문을 이용해 함수를 작성하는 문제
#include <stdio.h>
void SelfNumber() {
int i, j, n;
int len = 0, count, sum = 0;
int arr[4];
for (j = 0; j < 4; j++) {
if (n / 10 != 0)
len += count;
}
for (i = 0; i < len; i++) {
arr[i] = n % 10;
sum += arr[i];
}
int dn = n + sum;
}
진짜 처음에는 어떻게 해야 할지 몰라서 별걸 다해봤다. 자릿수에 따라서 더하는 각 자리 수의 개수도 달라지고.. 그리고 어차피 마지막에 생성자가 존재하는지 여부를 어떻게 판단해야 할지 모르겠다.
그래서 그냥 싹 다 지우고 처음부터 다시 시작했다. 찾아봤더니 처음부터 배열 값을 1로 설정해두고 나머지를 1이 아닌 수로 지정해서 1이 아닌 수들을 출력하도록 작성하는 풀이가 대부분이었다.
#include <stdio.h>
int SelfNumber(int n) {
int sum = n;
while (1) {
if (n == 0)
break;
sum += n % 10;
n = n / 10;
}
return sum;
}
main() {
int i = 1, temp;
int arr[10001] = { 0, };
for (i = 1; i < 10001; i++) {
temp = SelfNumber(i);
if (temp < 10001)
arr[temp] = 1;
}
for (i = 1; i < 10001; i++) {
if (arr[i] != 1)
printf("%d\n", i);
}
return 0;
}
대충 어떻게 진행되는지는 알겠는데 다시 풀라고 하면 못 풀 것 같다. 풀이만 10개 넘게 찾아본 것 같은데..
↓↓↓ 참고한 사이트
문제 출처
'C' 카테고리의 다른 글
#30. [백준_C언어] 1157 : 단어 공부 (0) | 2021.01.14 |
---|---|
#29. [백준_C언어] 10809 : 알파벳 찾기 (0) | 2021.01.14 |
#27. [백준_C언어] 15596 : 정수 N개의 합 (0) | 2021.01.13 |
#26. [백준_C언어] 4344 : 평균은 넘겠지 (0) | 2021.01.12 |
#25. [백준_C언어] 1546 : 평균 (0) | 2021.01.12 |