문제
괄호가 입력되면 올바른 괄호이면 “YES", 올바르지 않으면 ”NO"를 출력합니다.
(())() 이것은 괄호의 쌍이 올바르게 위치하는 거지만, (()()))은 올바른 괄호가 아니다.
▣ 입력설명
첫 번째 줄에 괄호 문자열이 입력됩니다. 문자열의 최대 길이는 30이다.
▣ 출력설명
첫 번째 줄에 YES, NO를 출력한다.
▣ 입력예제 1
(()(()))(()
▣ 출력예제 1
NO
풀이
스택을 사용해서 풀면 된다~ 여는 괄호만 스택에 저장하고, 닫는 괄호일 경우는 pop한다.
이렇게 하면 닫는 괄호가 더 많은 경우를 거를 수 있지만 여는 괄호가 더 많은 경우는 따로 체크해줘야 한다.
코드
import java.util.Scanner;
import java.util.Stack;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String s = in.next();
Stack<Character> stack = new Stack<>();
String answer = "YES";
for(char c : s.toCharArray()) {
if(c == ')') {
if(stack.isEmpty()) answer = "NO"; // ')'가 많은 경우
stack.pop();
}
else {
stack.push(c);
}
}
// '('가 많은 경우
if(!stack.isEmpty()) {
answer = "NO";
}
System.out.print(answer);
}
}
'PS(Java) > 인프런 강의 문제' 카테고리의 다른 글
[PS] 인프런 강의 - Stack & Queue 3. 크레인 인형뽑기(카카오) (0) | 2022.11.08 |
---|---|
[PS] 인프런 강의 - Stack & Queue 2. 괄호문자제거 (0) | 2022.11.06 |
[PS] 인프런 강의 - HashMap, HashSet, TreeSet 5. K번째 큰 수 (0) | 2022.11.03 |
[PS] 인프런 강의 - HashMap, HashSet, TreeSet 4. 모든 아나그램 찾기(해쉬, 투포인터, 슬라이딩 윈도우) (0) | 2022.11.01 |
[PS] 인프런 강의 - HashMap, HashSet, TreeSet 3. 매출액의 종류 (0) | 2022.10.25 |