[Java] 백준 - 11203번 : Numbers On a Tree (Silver V)

배똥회장·2022년 8월 9일
0
post-thumbnail
post-custom-banner

📝 문제

백준 - 11203번 : Numbers On a Tree


📝 답안

📌 작성 코드

import java.io.*;
public class Main {
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        //띄어쓰기로 트리의 높이와 루트가 나뉘어져있음
		String[] s = br.readLine().split(" ");
        
        //트리의 높이
		int n = Integer.parseInt(s[0]);
		
        //트리의 높이로 최정점 노드의 번호를 가져올 수 있음
        //이 때, int로 선언할 경우 높이 범위인 30을 계산할 때 int 범위를 초과하여 오류 발생함
		long num = (long) Math.pow(2, n+1) - 1;
		
        //최상위 노드의 위치
		int index = 1;
		
        //s의 길이가 1인 경우에는 루트가 없다는 뜻으로 그냥 리턴해야함
		if (s.length > 1) {
        	//글자 비교가 편하게 char[] 변환
			char[] word = s[1].toCharArray();
            
            //word 방문용 for문
			for (int i = 0; i < word.length; i++) {
				//만약 L이면 현재 위치에서 2만 곱하고, R일 경우에는 2를 곱하고 1을 더해줘야함 
                index = word[i] == 'L' ? index * 2 : index * 2 + 1;
			}
		}
	
    	//리턴할 숫자는 최상위 노드 숫자에서 위치를 빼고 1을 더해주면 됨
		System.out.println(num - index + 1);
	}
}

📌 결과


profile
어쩌면 개발자
post-custom-banner

0개의 댓글