printf를 쓰지 않고 숫자 출력하기.

“printf를 쓰지 않고 숫자(int형)를 출력하시오!”

얼마전에 모 기업 필기 입사 시험에 나온 코딩 문제다.

그때 이 문제를 딱 보고 ASCII코드 관련 문제구나 하고 생각만하고 다른 문제 푸는데 시간이 많이 소요되었기도 하고 putchar라는 함수명이 정확히 기억이 안나서 그냥 넘어갔던 문제였다.

갑자기 생각이 나서 한번 코드로 구현해봤다.

[CODE c]
#include <stdio.h>
#include <stdlib.h>

int powi(int, int);

int main(int argc, char *argv[]){
    int argv_1;
    int n, cnt;

    /* 스트링을 숫자로 바꾸는 짓을 해야겠지. */
    argv_1 = atoi(argv[1]);
   
    n = 1;
    cnt = 0;

    /* 자리수를 계산한다. */
    while( argv_1/n ){
        cnt++;
        n *= 10;
    }
   
    /* 숫자의 높은 자리부터 한자리씩 출력해야 한다.  */
    while( cnt– ){
        int num = argv_1 / powi(10, cnt);
        argv_1 -=  (num * powi(10, cnt));
        putchar( num + ‘0’ );/* 정답이 되는 키 */
    }

    return 0;
}

/* power함수 for int형 */
int powi(int base, int up){
    int nRet = 1;

    while(up–){
         nRet *= base;
    }

    return nRet;
}

[/CODE]

물론 답으로는 26번 라인 정도만 써도 되리라 본다.

ps. 시간이 가면 갈수록 코딩 스타일에서 for문보다 while문을 쓰는 경향이 짙어 지는거 같다.

CC BY-NC 4.0 printf를 쓰지 않고 숫자 출력하기. by from __future__ import dream is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.