YJ/C++
[백준/BOJ/C++] 2998번 8진수
Team DAON
2021. 12. 31. 10:12
[문제]
창영이는 여러 가지 진법을 공부하고 있다. 창영이는 어제 2진법을 배웠고, 오늘은 8진법을 배웠다. 이제, 2진법 수를 8진법 수로 변환하려고 한다.
창영이가 사용한 방법은 다음과 같다.
- 2진수의 길이가 3으로 나누어 떨어질 때 까지 수의 앞에 0을 붙인다.
- 그 다음, 3자리씩 그룹을 나눈다.
- 아래의 표를 참고해 8진수로 바꾼다.
2진수가 주어졌을 때, 창영이가 사용한 방법을 이용해 8진수로 바꾸는 프로그램을 작성하시오.
000 | 0 |
001 | 1 |
010 | 2 |
011 | 3 |
100 | 4 |
101 | 5 |
110 | 6 |
111 | 7 |
[입력]
첫째 줄에 2진수가 주어진다. 이 수는 100자리 이내이고, 첫 번째 자리는 1이다.
[출력]
첫째 줄에 8진수를 출력한다.
[Source Code]
#include <stdio.h>
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
string change(string temp){
if(temp == "000")
return "0";
else if(temp == "001")
return "1";
else if(temp == "010")
return "2";
else if(temp == "011")
return "3";
else if(temp == "100")
return "4";
else if(temp == "101")
return "5";
else if(temp == "110")
return "6";
else if(temp == "111")
return "7";
}
int main() {
string input;
cin >> input;
if(input.length() % 3 == 1)
input = "00" + input;
else if(input.length() % 3 == 2)
input = "0" + input;
for(int i = 0; i < input.length(); i+=3){
string temp = input.substr(i, 3);
cout << change(temp);
}
}
[결과 화면]