반응형

[문과 코린이의 IT 기록장] C++ 백준 문제풀이 - 8진수 2진수 (1212)
1212번: 8진수 2진수
첫째 줄에 8진수가 주어진다. 주어지는 수의 길이는 333,334을 넘지 않는다.
www.acmicpc.net
[ 문제 ]
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 |