Post List

[BOJ] 백준 2998 8진수

[BOJ] 백준 2998 8진수



우리가 알고 있는 8진수 변환이 아닌 창영이가 알려주는 변환법을 사용해야 합니다.

1. 3으로 나누어 떨어지는 길이까지 문자열의 앞에 0 을 추가해 주기.
2. 앞에서부터 3칸씩 나누어 창영식 변환법을 적용하기.

소스 코드 :

#include 
#include 
using namespace std;


int main() {
 string s;
 getline(cin, s);
 int slen = s.length();
 string tmp = "";
    // 길이가 3의 배수가 될때까지 0을 추가.
 while (slen++ % 3 != 0) {
  tmp += '0';
 }
    // 원본 문자열 s에 0을 추가한 tmp를 접합해줌.
 s = tmp + s;
    
    //3칸씩 나누어서 창영식 변환법 적용
 for (int i = 0; i < slen-1; i+=3) {
  if (s[i] == '0') {
   if (s[i + 1] == '0') {
    if (s[i + 2] == '0') {
     cout << '0';
    }
    else {
     cout << '1';
    }
   }
   else {
    if (s[i + 2] == '0') {
     cout << '2';
    }
    else {
     cout << '3';
    }
   }
  }
  else {
   if (s[i + 1] == '0') {
    if (s[i + 2] == '0') {
     cout << '4';
    }
    else {
     cout << '5';
    }
   }
   else {
    if (s[i + 2] == '0') {
     cout << '6';
    }
    else {
     cout << '7';
    }
   }
  }
 }
}

댓글