#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 |