작심삼일

[백준] 1373번 | 2진수 8진수 | C++ 본문

스터디/코테

[백준] 1373번 | 2진수 8진수 | C++

yun_s 2021. 11. 12. 09:40
728x90
반응형

문제 링크: https://www.acmicpc.net/problem/1373


문제

2진수가 주어졌을 때, 8진수로 변환하는 프로그램을 작성하시오.


입력

첫째 줄에 2진수가 주어진다. 주어지는 수의 길이는 1,000,000을 넘지 않는다.


출력

첫째 줄에 주어진 수를 8진수로 변환하여 출력한다.


내 풀이

2진수를 뒤에서부터 3자리씩 끊어 각 8진수로 변환한다.


코드

char A[len], temp;
int N, ans[len], cur;
long long mul = 1;

int main() {
	while (1) {
		scanf("%1c", &temp);

		if (temp == '\n') break;

		A[N] = temp - '0';	N++;
	}

	for (int t = 0; t < N; t++) {
		if (t % 3 == 0) {
			ans[cur] += A[N - 1 - t] * 1;
			cur++;
		}
		else if (t % 3 == 1) {
			ans[cur - 1] += A[N - 1 - t] * 2;
		}
		else {
			ans[cur - 1] += A[N - 1 - t] * 4;
		}
	}

	for (int t = cur - 1; t >= 0; t--) {
		printf("%d", ans[t]);
	}

	return 0;
}
728x90
반응형
Comments