https://www.acmicpc.net/problem/2231
https://codejin.tistory.com/10
4673번 문제를 풀면서 이 문제를 역연산으로 접근하려고 하다가 포기했던 문제인데, 기어코 역연산으로 풀게 만들었다.
뭐 어쩔수 있나. 하나하나 따져야지.....
(알고보니 하나하나 따져야 하는 브루트 포스단계의 문제였다.)
분명 논리적으로 맞는거 같은데 항상 컴퓨터는 내가 원하는대로 안따라준다.
내가 잘못한거겠지 뭐..... 어디서 틀린건지도 사실 모르겠다.
#include <stdio.h>
#include <math.h>
int main () {
int n, a = 10, cnt = 10; // 입력받은 셀프넘버, 생성자
int check = 0; // 만들어진 셀프넘버, n과 같은지 체크하기 위함
int is_true = 0; // 존재하는지 체크하기 위한 변수
// scanf("%d", &n);
n = 216;
while (cnt<=n) {
a = cnt;
check = cnt;
for (int i = 0; i <= floor(log10(cnt)+1); i++) {
check += a % 10;
a /= 10;
}
// printf("%d, %d\n", cnt, check);
if(check == n) {
is_true = 1;
break;
}
cnt++;
}
printf("%d", is_true ? cnt : 0);
return 0;
}
-------------------이거 올리고 난 직후-------------------
테스트하려고 a와 cnt의 값을 올려놨다가 안 바꿨다......
하....
#include <stdio.h>
#include <math.h>
int main () {
int n, a = 1, cnt = 1; // 입력받은 셀프넘버, 생성자
int check = 0; // 만들어진 셀프넘버, n과 같은지 체크하기 위함
int is_true = 0; // 존재하는지 체크하기 위한 변수
scanf("%d", &n);
// n = 216;
while (cnt<=n) {
a = cnt;
check = cnt;
for (int i = 0; i <= floor(log10(cnt)+1); i++) {
check += a % 10;
a /= 10;
}
// printf("%d, %d\n", cnt, check);
if(check == n) {
is_true = 1;
break;
}
cnt++;
}
printf("%d", is_true ? cnt : 0);
return 0;
}
'coding_test > BAEKJOON' 카테고리의 다른 글
백준 1920번 C언어 풀이(미완) (0) | 2021.08.26 |
---|---|
백준 10250번 C언어 풀이 (0) | 2021.08.26 |
백준 4153번 C언어 풀이 (0) | 2021.08.24 |
백준 1978번 C언어 풀이 (0) | 2021.08.24 |
백준 1929번 C언어 풀이 - 두번째 풀이 (0) | 2021.08.24 |