알고리즘/BOJ

백준 2998번 8진수

꾸준함. 2018. 10. 27. 16:18

문제 링크입니다: 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