티스토리 뷰
#include <stdio.h>
int number[7];
int separate(int n, int *arr)
{
int i = 0, digit = 0;
while(1) {
arr[i] = n % 10;
n /= 10;
if (n == 0) {
digit = i + 1;
break;
}
i++;
}
return digit;
}
int main(void)
{
int i, j, num, digit, sum;
int MIN = 2000000;
scanf("%d", &num);
digit = separate(num, number);
for (i = num - 1; i + (9 * digit) >= num; i--) {
sum = i;
digit = separate(i, number);
for (j = 0; j < digit; j++)
sum += number[j];
if (sum == num) {
MIN = i;
}
}
if (MIN == 2000000)
MIN = 0;
printf("%d", MIN);
return 0;
}
int combine(int* arr, int digit)
{
int i;
int ret = 0;
for (i = digit - 1; i >= 0; i--) {
ret *= 10;
ret += arr[i];
}
return ret;
}
풀이: 9분
코딩: 17분
디버깅: 13분
이참에 숫자를 문자열(or 숫자들)로 분해하는 함수(separate)와 문자열(or 숫자들)을 숫자로 조합하는 함수(combine)를 만들어둘 심산이었다. 필요할 때 쉽게 찾으려고 제목에 써놓음.
combine이 합병 정렬의 combine이랑 헷갈릴 수 있으니 다른 이름을 쓰고싶다...
join은 python 함수 이름이고... puttogether? addup?
틀은 있으니 이름이든 문자 or 숫자든 필요에 따라 바꾸면 되겠지.
실수들
- i의 숫자들이 아니라 num의 숫자들을 더했다.
- for문 아래 두번째 문장을 추가해 해결
- digit을 초기화 하지 않고 사용했다.
- digit을 초기화
- digit 초기화를 0으로 하고 for문의 조건식에 사용했다.
- digit을 num의 자릿수로 초기화
- 생성자가 없는 경우를 고려하지 않았다.
- 생성자가 없는 경우(MIN이 2,000,000) 0을 출력
'프로그래밍 > 문제풀이' 카테고리의 다른 글
[BOJ] 11047 동전 0 (0) | 2020.01.21 |
---|---|
[BOJ] 3085 사탕 게임 (0) | 2020.01.10 |
[BOJ] 2309 일곱 난쟁이 (0) | 2020.01.08 |
[BOJ] 1427 소트인사이드 (0) | 2019.09.23 |
[SQL] 프로그래머스 7daySQL 챌린지 (0) | 2019.09.08 |
댓글