백준 문제풀이

1373. 2진수 8진수 (자바, Java)

뮤츠 2022. 11. 22. 22:14

n진수를 모르는 사람을 위한 짧은 강의.

n진법의 각 자릿수의 n의 제곱꼴로 주어진다.

예를들어 우리가 쓰는 10진법의 394를 예로 들면, 3*10^2 + 9*10^1 + 4*10^0 의 꼴.

8 = 2^3 이므로, 2진법에서 세자리 = 8진법에서 1자리이므로

세자리씩 끊어 8진법으로 변환해주면 된다.

 

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String str = br.readLine(); // 2진수를 우선 문자열로 받아온다.
		if (str.length()%3==1) { // 계산을 위해, 3단위로 끊어줘야 하므로 자릿수를 맞춰주기 위해 0을 추가
			str = "00"+str; 
		} else if (str.length()%3==2) {
			str = "0"+str;
		}
		System.out.println(conversion(str));
	}
	
	static StringBuilder conversion(String str) {
		int n = str.length()/3; // 8진법으로 변환시 자릿수
		StringBuilder sb = new StringBuilder();
		for (int i=0; i<n; i++) {
			sb.append(4*(str.charAt(i*3)-48) + 2*(str.charAt(i*3+1)-48) + str.charAt(i*3+2)-48);			
		}
		return sb;
	}

}

'백준 문제풀이' 카테고리의 다른 글

2089. -2진수 (자바, Java)  (0) 2022.11.22
1212. 8진수 2진수 (자바, Java)  (0) 2022.11.22
17087.숨바꼭질 6 (자바, Java)  (0) 2022.11.22
9613. GCD 합 (자바, Java)  (0) 2022.11.22
11656. 접미사 배열 (자바, Java)  (0) 2022.11.20