문법/알게된 메소드

필요한 것만 받을 때

코딩 화이팅 2023. 2. 28. 16:54

https://swexpertacademy.com/main/talk/solvingClub/problemView.do?contestProbId=AV140YnqAIECFAYD&solveclubId=AYWesuzK3nUDFAQK&problemBoxTitle=3%EC%A3%BC%EC%B0%A8&problemBoxCnt=2&probBoxId=AYaW02iKojQDFARM+

 

SW Expert Academy

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

swexpertacademy.com

import java.util.Scanner;

public class swea중위순회 {
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		for (int Tc = 1; Tc <=10; Tc++) {
			int num=sc.nextInt();//숫자 입력
			char[] arr=new char[num+1];//트리 배열 만들어주고
			for (int i = 1; i <= num; i++) {
			arr[sc.nextInt()]=sc.nextLine().charAt(1);
			}//입력을 받는데 nextline으로 받아서 알파벳까지만 입력되게 charAt으로 막아줌.
			System.out.print("#"+Tc+" ");
			traverse(1, arr);
			System.out.println();
		}//테케만큼 반복
	}
	
	private static void traverse(int i,char[] arr) {//i번째 노드의 순회
		if (i<=arr.length-1) {
				//L : 왼쪽 트리로 탐색 이어나감
				traverse(i*2,arr);
				//V: 자기 자신을 방문 처리
				if (arr[i]!='\u0000') {
					System.out.print(arr[i]);
				//R : 오른쪽 트리로 탐색 이어나감
				traverse(i*2+1,arr);
			}
		}
	}
}

느낀점 : 입력에서 뒤에 정수들은 필요가 없었다. 그래서 그 정수들에 맞게 어떻게 입력을 받을까 엄청 고민하다가 옆에 동현이 형이 nextline으로 받아서 charAt으로 끊어서 받으면 된다고 했다.보자마자 감탄 필요한 것만 받을 때는 

nextLine()으로 받고 .charAt으로 하나의 알파벳만 받아 입력되게 해줄 수 있다.