본문 바로가기

백준

1212 8진수 2진수

#include <iostream>
#include <string>

using namespace std;

int main() {
    string num_str;
    cin >> num_str;

    string octal_number[8];
    string first_octal_number[8];
    
    octal_number[0] = "000";
    octal_number[1] = "001";
    octal_number[2] = "010";
    octal_number[3] = "011";
    octal_number[4] = "100";
    octal_number[5] = "101";
    octal_number[6] = "110";
    octal_number[7] = "111";
    
    first_octal_number[0] = "0";
    first_octal_number[1] = "1";
    first_octal_number[2] = "10";
    first_octal_number[3] = "11";
    first_octal_number[4] = "100";
    first_octal_number[5] = "101";
    first_octal_number[6] = "110";
    first_octal_number[7] = "111";

    int length = num_str.length();

    for(int i = 0; i < length; i++){
        if(i == 0)
            cout << first_octal_number[num_str[i] - '0'];
        else cout << octal_number[num_str[i] - '0'];
    }
}

십진수로 바꾼 다음 2로 나눠가며 나머지를 stack에 저장하고 pop하는 방식이랑, 위에처럼 값 저장한 다음 출력하는 방법을 생각했는데 후자로 풀었다. 어차피 8개 밖에 없는데 그냥 저장하고 갖다써도 되지 않을까 싶었음. 뭔가 안 스맡해보이지만 음.. 난 마음에 든다!

 

#include <iostream>
#include <string>

using namespace std;

int main() {
    string num_str;
    cin >> num_str;

    string octal_number[8] = {"000", "001", "010", "011", "100", "101", "110", "111"};
    string first_octal_number[8] = {"0", "1", "10", "11", "100", "101", "110", "111"};
    
    int length = num_str.length();

    for(int i = 0; i < length; i++){
        if(i == 0)
            cout << first_octal_number[num_str[i] - '0'];
        else cout << octal_number[num_str[i] - '0'];
    }
}

다른 사람도 비슷하게 푼 것 같다. 보니깐 바로 초기화를 할 수 있길래 이렇게 바꿔서 코딩했다.

'백준' 카테고리의 다른 글

2530 인공지능 시계  (0) 2019.09.30
1712 손익분기점  (0) 2019.09.29
10039 평균점수  (0) 2019.09.29
8393 합  (0) 2019.09.29
15894 수학은 체육과목 입니다  (0) 2019.09.29