Link
Today
Total
10-17 12:16
Archives
관리 메뉴

초보개발자 긍.응.성

[Java] 7985. Rooted Binary Tree 재구성 본문

코딩테스트/SW Expert Academy

[Java] 7985. Rooted Binary Tree 재구성

긍.응.성 2019. 12. 19. 21:51
반응형

D3-7985. Rooted Binary Tree 재구성

 

문제출처: https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWu1JmN6Js4DFASy&categoryId=AWu1JmN6Js4DFASy&categoryType=CODE

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

n번째 degree의 숫자들이 나타나는 index의 규칙을 찾아  root부터 LeafNode까지 순서대로 출력하도록 하였다.

 

 

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

class Solution {
	public static void main(String args[]) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		int T = Integer.parseInt(br.readLine());

		for (int test_case = 1; test_case <= T; test_case++) {
			int k = Integer.parseInt(br.readLine());
			String[] nums = br.readLine().split(" ");
			int degree = 0;
			int len = nums.length;
			int sqrt = 1;
			while (sqrt < len + 1) {
				sqrt *= 2;
				degree++;
			}
			
			bw.write("#"+test_case+" ");
			for (int i = degree; i > 0; i--) {
				int idx = (int) Math.pow(2, i - 1);
				int interval = idx*2;
				idx--;
				bw.write(nums[idx]);
				while (idx + interval < len) {
					idx += interval;
					bw.write(" "+nums[idx]);
				}
				bw.write('\n');
			}
		}
		bw.flush();
		bw.close();
		br.close();
	}
}
반응형
Comments