수가 8진수로 주어지면, 이를 2진수로 변환하는 프로그램을 작성하시오.
 

  첫째 줄에 수가 8진수로 주어진다. 주어지는 수의 길이는 333,334를 넘지 않는다.
 

  첫째 줄에 주어진 수를 2진수로 변환하여 출력한다. 수가 0인 경우를 제외하고는 반드시 1로 시작해야 한다.
 

314

11001100




8진수를 2진수로 바꾸라는 문제다.

복잡하게 문제를 해결하던 중 직관적이고 간단한 해법이 생각났다.

8진수, 0부터 7까지의 모든 경우의 수를 배열에 저장해보았다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <cstring>
using namespace std;
 
int main()
{
    char str[333335];
    cin >> str;
 
    char dic1[8][4] = {"000","001","010","011","100","101","110","111"};
    char dic2[8][4] = {"","1","10","11","100","101","110","111"};
 
    cout << dic2[str[0]-'0'];
 
    int len = strlen(str);
    for(int i=1;i<len;i++)
    {
        cout << dic1[str[i]-'0'];
    }
 
}


문제 출처 : http://www.acmicpc.net/

'Tip & Tech > 실전알고리즘' 카테고리의 다른 글

보물  (0) 2013.09.23
다리 놓기  (0) 2013.09.23
시작  (0) 2013.09.23
posted by 알 수 없는 사용자