ABOUT ME

-

오늘 방문자
-
어제 방문자
-
전체
-
  • [hackerRank] JAVA Stack
    알고리즘 2020. 10. 26. 23:19

     

    문제

    www.hackerrank.com/challenges/java-stack/problem

     

     

    접근방법

    - 괄호의 짝이 맞으면 되는 문제

    - stack의 pop을 이해한다면 충분히 쉬운 문제

    - 좀 더 코드를 줄여보자면 push하는 부분을 else로 빼서하는 것도 코드를 줄일 수 있음

     개인적으로  push하는 부분을 '(', '{', '[' 를 명확하게 써주는게 더좋은거 같아서 코드를 풀어서 씀

     

     

    코드

    package com.cm;
    
    import java.util.Scanner;
    import java.util.Stack;
    
    /**
     * https://www.hackerrank.com/challenges/java-stack/problem
     */
    public class JavaStack {
    
        public JavaStack() {
            solution();
        }
    
        public void solution(){
            Scanner sc = new Scanner(System.in);
    
            Stack<String> stack = new Stack<>();
    
            boolean result = true;
    
            while (sc.hasNext()) {
                String input=sc.next();
    
                if(input.length()%2>0){ // 괄호의 개수는 짝수여야 함
                    result = false;
                }else{
                    String[] arr = input.split("");
    
                    for (int i=0 ; i<arr.length ;i++){
                        if(arr[i].equals("(")) {
                            stack.push(arr[i]);
                        }else if(arr[i].equals("{")) {
                            stack.push(arr[i]);
                        }else if(arr[i].equals("[")) {
                            stack.push(arr[i]);
                        }else if(arr[i].equals(")")){
                            if(!stack.pop().equals("(")){
                                result = false;
                                break;
                            }
                        }else if(arr[i].equals("}")){
                            if(!stack.pop().equals("{")){
                                result = false;
                                break;
                            }
                        }else if(arr[i].equals("]")){
                            if(!stack.pop().equals("[")){
                                result = false;
                                break;
                            }
                        }
                    }
                }
    
                System.out.println(result);
            }
        }
    }
    

    '알고리즘' 카테고리의 다른 글

    [hackerRank] primChecker  (0) 2021.02.28
    [hackerRank] JavaComparator  (0) 2021.02.25
    [hackerRank] StringReverse  (0) 2020.10.06
    [hackerRank] datatypes  (0) 2020.09.29
    [hackerRank] AppleAndOrange  (0) 2019.12.17

    댓글

Designed by Tistory.