-
[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