1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int divide(int n); //각 자리수 구해주는 함수
int main() {
int n;
int i = 1;
scanf("%d", &n);
while (1) { //어차피 젤 작은 생성자
if (n == i + divide(i)) {
printf("%d", i);
break;
}
else if (i == n) {
printf("0");
break;
}
i++;
}
}
int divide(int n) {
int arr[7] = { 0, };
int num = 1000000;
int sum = 0; //각 자리수의 합
for (int i = 0; i < 7; i++) {
arr[i] = n / num;
n = n % num;
num /= 10;
}
for (int i = 0; i < 7; i++) {
sum += arr[i];
}
return sum;
}
|
cs |
시간초과가 나지 않았다 왜일까? 내 생각보다 while문은 빠른가보다.. (시간 복잡도에 관한 책을 읽고 있다 곧 깨달을지도?)
'N의 가장 작은 생성자'가 나름 중요 포인트인거 같다
어차피 제일 작은 수 구하면 되니까 바로 break하면 된다 순간 min 써서 최소값 구할뻔
+) 백준 문제 풀 때 제일 필요한 게 '반례'라 생각한다ㅠㅠ
https://www.acmicpc.net/board/view/80928
글 읽기 - [Python]반례 부탁드립니다.
댓글을 작성하려면 로그인해야 합니다.
www.acmicpc.net
'프로그래밍 언어 > C언어' 카테고리의 다른 글
백준 > 2164 카드2 (0) | 2022.02.04 |
---|---|
백준 > 2292 벌집 (0) | 2022.02.01 |
백준 > 2108 통계학 (0) | 2022.01.12 |
백준 > 1018 체스판 다시 칠하기 (0) | 2022.01.11 |
백준 > 11050 이항 계수 1 (0) | 2022.01.07 |