1212번 - 8진수 2진수
8진수를 2진수로 바꾸는 문제.
2진수를 8진수로 바꿀때와 비슷하게
8진수 숫자 하나 하나를 2진수로 바꾸면 되는 문제였다.
단, 맨 첫 8진수 숫자를 빼고, 나머지 8진수 숫자들은 , 무조건 2진수 3자리로 나타내야 했다. (처음에 이점을 간과했음)
그리고 내가 짠 코드는 0을 따로 추가해야했다.
그 외에는 2진수로 바꾸는 방법 등은 동일하게 사용함.
<정답 코드>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | #include<iostream> #include<string> #include<vector> #include<algorithm> using namespace std; string getNum(char s,bool isFirst) { int n = s - '0'; vector<char> v; string ret; //2진수로 변환 while (n != 0) { v.push_back(n % 2); n /= 2; } //처음 숫자를 빼고는 2진수 세자리로 만들기 위해 빈곳에 0을 추가 if (!isFirst) { int size = v.size(); for (int i = 0; i < 3 - size; i++) { v.push_back(0); } } reverse(v.begin(), v.end()); for (int i = 0; i < v.size(); i++) { ret += v[i] + '0'; } return ret; } int main() { string str; string ans; cin >> str; for (int i = 0; i < str.size(); i++) { ans += getNum(str[i],!i); } //0일때 예외 처리 if (str[0] == '0') { ans = '0'; } cout << ans << endl; return 0; } | cs |
반응형