알고리즘[2진수 - 8진수]

Kim Hyen Su·2024년 1월 8일
1

👀알고리즘 개념

목록 보기
4/23

🎆 2진수→8진법 변환

0과 1로 구성된 2진수를 8진법 변환하기 위해서는 8 = 2³ 이기 때문에, 3자리마다 끊어서 변환해주면 된다.

001 => 1
010 => 2
011 => 2 + 1 = 3
100 => 4
101 = 4 + 0 + 1 = 5
110 = 4 + 2 + 0 = 6
111 = 4 + 2 + 1 = 7

위의 계산을 보면, 중요한 규칙이 있다.

왼쪽을 첫번째로 보면 0인 경우 0으로 취급하고 1인 경우 '4' 로 취급하여 더해준다.
두번째는 1인 경우 '2'로 취급하여 더해준다.
마지막 오른쪽 세번째는 1인 경우 '1'로 취급하여 더해준다.

❗주의할점
3자리 마다 끊어서 읽어오는 대신에, 3자리가 아닌 경우 즉, 2진수의 길이가 3의 배수에 맞는 갯수가 아닌 경우, 해당 나머지 수들을 우선적으로 변환해준다.

	if(len % 3 == 1){ // 나머지 1자리 2진수를 8진수로 변환
		sb.append(N.charAt(0));
	}else if(len % 3 == 2){ // 나머지 2자리의 수들을 8진수로 변환
		sb.append((N.charAt(0)- '0') * 2 + (N.charAt(1) - '0'));
	}

	for(int i = N.length() % 3; i < N.length(); i+=3) {
		sb.append((N.charAt(i) - '0') * 4 + (N.charAt(i+1) - '0') * 2
		+ (N.charAt(i+2) - '0'));
	}

📖 참고

[백준] 1373번 2진수 8진수 - Java, 자바

profile
백엔드 서버 엔지니어

0개의 댓글