[백준/C] 4673번 : 셀프 넘버
https://www.acmicpc.net/problem/4673
#include <stdio.h>
int d(int n) {
int result = n;
while (n>0)
{
result += n % 10;
n = n / 10;
}
return result;
}
int main(void) {
int i;
int a[10001] = { 0, };
for (i = 1; i < 10001; i++)
{
if (d(i) <10001)
a[d(i)] = 1;
}
for (i = 1; i < 10001; i++)
{
if (a[i] == 0)
printf("%d\n", i);
}
return 0;
}
컴파일 에러가 떴던 이유
'어 이게 왜 안 되지?'라고 생각이 들었을 때, 왜 안됐었는지를 알아내서 간단하게 적습니다.
if (d(i)<10001) // 이걸 안 했었다!
a[d(i)] = 1;
d(i)가 배열 a의 index 값으로 들어가기 때문에 d(i)가 배열 a의 길이인 10001보다 작은지를 비교해줬어야했는데, 비교하지 않고 값을 바로 집어넣어서 컴파일 에러가 났었습니다.
개선할 점
코드를 제출하여 '맞았습니다!'가 뜬 후, 다른 사람들의 코드를 보고 개선할 점을 찾습니다.
#define N 10001
이렇게 처음부터 배열의 길이를 정의해주면 10001 대신 N을 사용할 수 있어 편해집니다.
'🐹알고리즘' 카테고리의 다른 글
[백준/Python/메모] 빠른 입출력 관련 (0) | 2022.01.09 |
---|---|
알고리즘을 시작하며... (0) | 2020.07.17 |
[파이썬] 한 줄에 정수 2개 입력 받기 (0) | 2020.06.12 |
댓글
이 글 공유하기
다른 글
-
[백준/Python/메모] 빠른 입출력 관련
[백준/Python/메모] 빠른 입출력 관련
2022.01.09 -
알고리즘을 시작하며...
알고리즘을 시작하며...
2020.07.17 -
[파이썬] 한 줄에 정수 2개 입력 받기
[파이썬] 한 줄에 정수 2개 입력 받기
2020.06.12