[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'; } } } } }
댓글
댓글 쓰기