컴퓨터 과학/자료구조 및 알고리즘
백준 1212번, 8 진수 2 진수
잡학다식을꿈꾼다
2023. 11. 27. 12:32
반응형
문제
8진수가 주어졌을 때, 2진수로 변환하는 프로그램을 작성하시오.
입력
첫째 줄에 8진수가 주어진다. 주어지는 수의 길이는 333,334을 넘지 않는다.
출력
첫째 줄에 주어진 수를 2진수로 변환하여 출력한다. 수가 0인 경우를 제외하고는 반드시 1로 시작해야 한다.
예제 입력 1
314
예제 출력 1
11001100
8 진수를 2 진수로 바꾸는 문제는 두 진수의 관계를 알기만 하면 쉬운 문제다. 2 진수의 세 자리는 8 진수의 한 자리와 같다. 이 점을 이용하여 다음과 같이 문제를 해결할 것이다. (혹시나 이진법, 팔진법, 십진법 등 전환 방법에 대해서 모르는 사람은 한 번 인터넷에 검색하고 밑의 풀이를 보기 바란다. 쉽게 이해할 수 있을 것이다. )
- 8 진수로 된 데이터를 입력받는다. 이 때 입력받은 데이터는 문자열이다.
- 앞에서부터 문자열을 읽어 가면서 8 진수 한 자리를 2 진수 세 자리로 변환하고 이를 출력하는 작업을 한다. 입력받은 데이터가 0인 경우를 제외하고 0이 출력되는 것은 막는다. ( 첫 번째 문자에 대해서는 예외적으로 처리한다. )
코드는 다음과 같다.
#include <iostream>
#include <string>
int main()
{
std::string input;
std::cin >> input;
for (int i = 0; i < input.length(); i++)
{
if (i == 0)
{
if ((input[i] - '0') / 4 != 0)
{
std::cout << 1;
}
if ((input[i] - '0') / 4 == 0 && ((input[i] - '0') % 4) / 2 == 0);
else std::cout << ((input[i] - '0') % 4) / 2;
std::cout << (input[i] - '0') % 4 % 2;
}
else
{
std::cout << (input[i] - '0') / 4;
std::cout << ((input[i] - '0') % 4) / 2;
std::cout << (input[i] - '0') % 4 % 2;
}
}
return 0;
}
2 진수와 8 진수의 관계에 대해서 잘 이해하고 있다면 쉽게 풀 수 있는 문제이다. 이 것으로 글을 마친다.
반응형