ABOUT ME

Today
Yesterday
Total
  • Java 10799 쇠막대기
    PS 2023. 5. 4. 14:40

     

    풀이 :

    스택을 사용해 '('가 나오면 우선 푸쉬, ')'가 나오면 이전 값이 '('인지를 체크하여 result에 값을 더 해주었습니다.

    쇠막대기 하나를 레이저 두개로 자른다면 쇠막대기는 1 + 2, 총 3개가 됩니다. 쇠막대기를 뜻하는 '('가 입력되고 쇠막대기의 끝을 뜻하는 ')'가 입력될 때까지 쇠막대기는 이어지고 있으니 이전 값이 '('인 ')',  즉 레이저가 입력되면 size를 result에 더해줍니다.

    그리고 쇠막대기의 끝을 알리는 ')'가 입력된다면 result에 1을 더 해줌으로써 값을 구할 수 있었습니다.

     

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.Stack;
    
    public class Main {
        public static void main(String[] args) throws IOException{
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            Stack<Integer> s = new Stack<>();
            String str = br.readLine();
            int result = 0;
            for(int i = 0; i < str.length(); i++){
                if(str.charAt(i) == '('){
                    s.push(i);
                }
                if(str.charAt(i) == ')'){
                    s.pop();
                    if(str.charAt(i-1) == '('){
                        result += s.size();
                    }else {
                        result++;
                    }
                }
            }
            System.out.println(result);
        }
    }

    'PS' 카테고리의 다른 글

    Java 17299 오등큰수  (0) 2023.05.04
    Java 17298 오큰수  (0) 2023.05.04
    Java 10870 피보나치 수 5  (0) 2023.05.04
    Java 17413 단어 뒤집기2  (0) 2023.05.04
    Java 10866 덱  (0) 2023.05.04
Designed by Tistory.