문제 링크입니다: https://www.acmicpc.net/problem/2998
주어진 이진수의 길이를 3의 배수로 만든 후 3개씩 끊어서 계산하면 되는 문제였습니다.
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main(void)
{
ios_base::sync_with_stdio(0);
cin.tie(0);
string s;
cin >> s;
//길이를 3의 배수로 만든다
while (1)
{
if (s.length() % 3 == 0)
break;
s = '0' + s;
}
string result;
for (int i = s.length() - 3; i >= 0;)
{
//세 개씩 끊어서 계산
result += ((s[i] - '0') * 4 + (s[i + 1] - '0') * 2 + (s[i + 2] - '0')) + '0';
i -= 3;
}
//거꾸로 출력해야한다
reverse(result.begin(), result.end());
cout << result << "\n";
return 0;
}
개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
'알고리즘 > BOJ' 카테고리의 다른 글
백준 9996번 한국이 그리울 땐 서버에 접속하지 (0) | 2018.10.27 |
---|---|
백준 1718번 암호 (0) | 2018.10.27 |
백준 1371번 가장 많은 글자 (0) | 2018.10.27 |
백준 1919번 애너그램 만들기 (2) | 2018.10.27 |
백준 2857번 FBI (0) | 2018.10.27 |