백준 algorithm

백준 1373 - 2진수 8진수

cosmohoo 2020. 3. 26. 20:21
반응형

문제 설명 

 

 

 

 

=> 수의길이가 1000000 이므로 실제수로는 구현할 수 없다. 

 

=> 11, 001, 100 의 예시를 들어보자

=> 3, 1, 4
=> 위와 같이 뒤에서부터 3개씩 나누어 수를 8진수로 변환할 수 있다. 

=> 4의 자리, 2의 자리, 1의 자리를 차례대로 곱하고 더하여 출력한다. 

 

 

***
string에 있는 숫자를 실제 숫자로 print하기 위해서 '0' 을 빼주고 계산한다. 

 

 

 

#include <iostream>
#include <string>

using namespace std;

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
        
    string S;
    cin >> S;
    int len = S.length();
    
    if(len%3 == 1)
    {
        cout << S[0];
    }
    else if(len % 3 == 2)
    {
        cout << (( S[0]-'0') * 2 ) +  ((S[1] - '0') *1) ;
    }
    for( int i = len %3; i< len; i=i+3)
    {
     cout << ((S[i]-'0') * 4) + (( S[i+1]-'0') * 2 )+ ( (S[i+2] - '0') *1);
    }
    return 0;
}
반응형