본문 바로가기
PS 문제 풀이/Jungol

[Jungol] 정올 1009 각 자리수의 역과 합(Number Reverse)

by 까망 하르방 2021. 3. 17.
반응형

출처: http://jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=288&sca=2040

Approach

문자열을 입력받아 길이 len(string)를 구해서 뒤에서 부터 문자를 다시 저장합니다

출력할 때는 아래와 같이 35603200  00230653  ( leading zero가 발 생할 수 있는 숫자를 주의합니다.)

 Input 

146160490

35603200

175268372

0

 

 Output 

94061641 31

230653 19

273862571 41


#include <stdio.h>
 
int len(const char* str) {
    int ret = 0;
    for (;;) {
        if (str[ret] == '\0') break;
        ret++;
    }
    return ret;
}
 
int strcmp(const char* s, const char* t) {
    while (*s && *s == *t) s++, t++;
    return *s - *t;
}
 
char num[30], ans[30];
int main() {
    // freopen("input.txt", "r", stdin);
    while (1) {
        scanf("%s", num);
        if (strcmp("0", num) == 0) {
            break;
        }
        
        int sum = 0;
        int sLen = len(num);
        for (int i = sLen - 1, j=0; i >= 0; --i, ++j) {
            ans[j] = num[i];
            sum = sum + (num[i] - 48);
        }
 
        int idx;
        // 숫자를 뒤집었을 때, leading zero 제거
        for (idx = 0; idx < sLen; ++idx) {
            if (ans[idx] != '0') break;
        }
        for (; idx < sLen; ++idx) {
            printf("%c", ans[idx]);
        }
 
        printf(" %d\n", sum);
    }
}

 

반응형

댓글