문법/알게된 메소드
필요한 것만 받을 때
코딩 화이팅
2023. 2. 28. 16:54
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으로 하나의 알파벳만 받아 입력되게 해줄 수 있다.