※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 1212번 문제인 8진수 2진수이다.
문제는 아래 링크를 확인하자.

https://www.acmicpc.net/problem/1212

 

1212번: 8진수 2진수

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

www.acmicpc.net

8진수를 2진수로 바꾸려면, 각 자리의 8진수 자리를 2진수로 바꿔서 출력하면 된다.

예를 들어 8진수의 한 자리가 6이었다면, 이진수인 110으로 바꿔서 출력하면 되는 것이다.

 

단, 3과 같이 4보다 작은 수는 11이 아닌 011로 출력해야하는 점에 유의하자. (첫자리 제외)

 

또한, 0의 경우 0을 출력해야함에 유의하자.

 

아래는 제출한 소스코드이다.

#include <iostream>
#include <string>
using namespace std;

string ansf[8] = { "","1","10","11","100","101","110","111" };
string ans[8] = { "000","001","010","011","100","101","110","111" };

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	string s; cin >> s;
	if (s == "0") cout << 0; // 0 예외처리(0으로 시작 가능)
	else {
		int slen = s.length();
		cout << ansf[s[0] - '0'];
		for (int i = 1; i < slen; i++) {
			cout << ans[s[i] - '0'];
		}
	}
}
728x90

'BOJ' 카테고리의 다른 글

[BOJ 2908 // C++] 상수  (0) 2021.05.01
[BOJ 5355 // C++] 화성 수학  (0) 2021.05.01
[BOJ 2742 // C++] 기찍 N  (0) 2021.05.01
[BOJ 21236 // C++] Comfortable Cows  (0) 2021.04.30
[BOJ 21235 // C++] Year of the Cow  (0) 2021.04.29

+ Recent posts