“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문을 쓰는 경향이 짙어 지는거 같다.
printf를 쓰지 않고 숫자 출력하기. by from __future__ import dream is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.