반응형
[문과 코린이의 IT 기록장] C++ 백준 문제풀이 - 8진수 2진수 (1212)
[ 문제 ]
8진수가 주어졌을 때, 2진수로 변환하는 프로그램을 작성하시오.
[ 입력 ]
첫째 줄에 8진수가 주어진다. 주어지는 수의 길이는 333,334을 넘지 않는다.
[ 출력 ]
첫째 줄에 주어진 수를 2진수로 변환하여 출력한다. 수가 0인 경우를 제외하고는 반드시 1로 시작해야 한다.
[ 코드 1 ]
#include<iostream>
#include<string>
#include <algorithm>
using namespace std;
string Change8to2(char c) {
string result = "";
int num = c - '0';
if (num == 0)
{
return "0";
}
while (num != 0)
{
result += to_string(num % 2);
// to_string( ) : 숫자 타입의 데이터를 안전하게 string 타입으로 변경하도록 하는 함수
num = num / 2;
}
reverse(result.begin(), result.end());
// std::reverse 함수 헤더파일 : <algorithm>
return result;
}
int main() {
string s;
cin >> s;
for (int i = 0; i < s.size(); i++)
{
if (i == 0)
{
cout << Change8to2(s[i]);
}
else
{
string temp = Change8to2(s[i]);
while (temp.size() != 3)
{
temp = '0' + temp;
}
cout << temp;
}
}
}
[ 코드 2 ]
#include<iostream>
using namespace std;
string eight[8] = { "000","001","010","011","100","101","110","111" };
int main() {
string s;
cin >> s;
bool start = true;
if (s.length() == 1 && s[0]-'0' == 0)
{
cout << "0";
}
for (int i = 0; i < s.length(); i++)
{
int n = s[i] - '0';
if (start == true && n<4)
{
if (n == 0)
{
continue;
}
else if (n == 1)
{
cout << "1";
}
else if (n == 2)
{
cout << "10";
}
else if (n == 3)
{
cout << "11";
}
start = false;
}
else
{
cout << eight[n];
start = false;
}
}
return 0;
}
* 유의사항 - 아직 공부하고 있는 문과생 코린이가, 정리해서 남겨놓은 정리 및 필기노트입니다. - 정확하지 않거나, 틀린 점이 있을 수 있으니, 유의해서 봐주시면 감사하겠습니다. - 혹시 잘못된 점을 발견하셨다면, 댓글로 친절하게 남겨주시면 감사하겠습니다 :) |
반응형
'문과 코린이의, [C. C++] 기록 > C++ 백준 문제풀이' 카테고리의 다른 글
[문과 코린이의 IT 기록장] C++ 백준 문제풀이[DP] - 1로 만들기 (1463) (0) | 2021.07.17 |
---|---|
[문과 코린이의 IT 기록장] C++ 백준 문제풀이 - -2진수 (2089) (0) | 2021.07.16 |
[문과 코린이의 IT 기록장] C++ 백준 문제풀이 - 오등큰수 (17299) (0) | 2021.07.16 |
[문과 코린이의 IT 기록장] C++ 백준 문제풀이 - 2진수 8진수 (1373) (0) | 2021.07.16 |
[문과 코린이의 IT 기록장] C++ 백준 문제풀이 - 숨바꼭질 6 (17087) (0) | 2021.07.14 |