코딩테스트 - 3진법 뒤집기

728x90
반응형

3진법, 당황했다.

 

우선 내가 짠 코드

 

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

int solution(int n) {
    int answer = 0;
    int square = 0;
    int buff[5000] = {0, };

    while(n > 0)    {
        buff[square++] = n%3;
        n/=3;
    }
    for(int i = 0; i < square; i++) {
        answer = answer + (buff[i] * (pow(3, (square-i-1))));
    }
    return answer;
}

 

정답은 통과했지만, 맘에들지 않는다. 

 

아래는, 감탄사가 나오는 코드 역시 세상에 천재는 많다. 굿굿

 

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

int solution(int n) {
    int temp = 0;
    int cn = n;

    while (cn != 0)
    {
        int remain = cn % 3;
        temp *= 3;
        temp += remain;
        cn /= 3;

    }


    return temp;
}

다른 진법연산에도 활용할 수 있을것 같다. 

 

기억해둬야지 .

 

- 끝 -

728x90
반응형