728x90
인프런의 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의를 수강하며 간략한 문제 설명, 예습 풀이 코드, 강의에서 설명하는 풀이 코드를 정리하고 있습니다.
- 문제 링크 : https://cote.inflearn.com/contest/10/problem/05-01
- 문제 설명 : 괄호로만 이루어진 문자열이 주어졌을때 여는 괄호, 닫는 괄호의 짝이 맞으면 YES, 아니면 NO를 출력하는 문제
- 예시 : (())) -> 닫는 괄호가 1개더 많기 때문에 NO
풀이
- Stack 자료구조 사용
package inflearn.stack_queue;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
//올바른 괄호
public class Main5_1 {
public static String solution(String s) {
Stack<Character> stack = new Stack<>();
for (char c : s.toCharArray()) {
if (c == '(') {
stack.push(c);
} else {
if (stack.isEmpty()) { //닫는 괄호가 더 많다면
return "NO";
}
stack.pop();
}
}
if (!stack.isEmpty()) { //여는 괄호가 더 많다면
return "NO";
}
return "YES";
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println(solution(br.readLine()));
}
}
댓글