본문 바로가기

알고리즘/BOJ

11576번

11576번 - Base Conversion


진법 변환문제.


A진법을 B진법으로 바꾸기 위해서 A진법을 10진법으로 바꾼 후, 10진법을 B진법으로 바꿨다.


그동안 진법을 좀 풀어봐서 이제 감이 잡혔다.


이번 코드에서는 while 문이 아닌 재귀를 쓰면서 호출이 종료되기 직전에 결과를 출력해서


stack 이나 vector 를 reverse 하지 않고 역순으로 출력이 되도록 하였다.


( 이게 위상정렬인가?? 에서 배웠던것 같은데.. 복습이 필요하겠군)


<정답 코드>


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
32
33
34
35
36
#include<iostream>
#include<math.h>
using namespace std;
 
void trans(int x, int b)
{
    if (x == 0)
    {
        return;
    }
 
    trans(x / b, b);
 
    cout << x%b << " ";
 
    return;
}
 
int main()
{
    int A, B, M;
    int X = 0;
    cin >> A >> B >> M;
 
    for (int i = M-1; i >=0; i--)
    {
        int tmp;
        cin >> tmp;
        X += tmp*(pow(A, i));
    }
 
    trans(X, B);
    cout << endl;
 
    return 0;
}
cs


반응형

'알고리즘 > BOJ' 카테고리의 다른 글

1929번  (0) 2017.12.08
1978번  (0) 2017.12.08
2089번  (0) 2017.12.08
1212번  (0) 2017.12.08
1766번  (0) 2017.12.05