白駿1373:バイナリ8進法
1934 ワード
★★☆☆☆
基本アルゴリズム自体は数法で計算すればいいので、かなり簡単です
最後に100%エラーが発生し、解決に少し時間がかかりました.
前のアレイ変換問題ではstackを使うと効率的に見えるのでstackを使いました.
8進数は2進数の3桁で、それから加算を続ければいいです.
また、出力に新しいスタックが作成されました.
プラス0の場合は0になるはずなので、入力を受けて入力値が0になるとすぐに戻ります.
基本アルゴリズム自体は数法で計算すればいいので、かなり簡単です
最後に100%エラーが発生し、解決に少し時間がかかりました.
『私の答え』
前のアレイ変換問題ではstackを使うと効率的に見えるのでstackを使いました.
8進数は2進数の3桁で、それから加算を続ければいいです.
また、出力に新しいスタックが作成されました.
プラス0の場合は0になるはずなので、入力を受けて入力値が0になるとすぐに戻ります.
#include <iostream>
#include <stack>
#include <string>
using namespace std;
int main() {
int n;
stack<int> arr;
string tem;
cin >> tem;
if (tem.length() == 1 && tem[0] == '0') {
cout << 0 << "\n";
return 0;
}
for (int i = 0; i < tem.length(); i++) {
arr.push(tem[i]-'0');
}
//cout << "stack 사이즈 : " << arr.size() << "\n";
int r = 1;
stack<int> ret;
int temval=0;
while (!arr.empty()) {
temval += arr.top()*r;
arr.pop();
//cout << "값 확인 : " << temval << ", r: " << r << "\n";
r = r * 2;
if (r>=8) {
r = 1;
ret.push(temval);
temval = 0;
}
if (arr.empty() && temval != 0) {
ret.push(temval);
}
}
while (!ret.empty()) {
cout << ret.top();
ret.pop();
}
cout << "\n";
return 0;
}
Reference
この問題について(白駿1373:バイナリ8進法), 我々は、より多くの情報をここで見つけました https://velog.io/@jeongopo/백준-1373-2진수-8진수テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol