티스토리 뷰

#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
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함