[백준/C] 4673번 : 셀프 넘버
https://www.acmicpc.net/problem/4673
4673번: 셀프 넘버
문제 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌�
www.acmicpc.net
#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
댓글을 사용할 수 없습니다.