백준 - 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);
}
}