https://school.programmers.co.kr/learn/courses/30/lessons/12909?language=java
초기 문제 접근
- int 변수로 flag를 하나 만들고, '('는 ++, ')'는 --로
- 최종 flag가 0이 아니면 false, 0이면 true로 생각했으나,
- ")()(" 같은 문자열을 거르지 못했음
- 나중에야 알았던게 flag가 < 0 이 되면 바로 false를 하면 됐구나..
문제 접근
- '('를 만나면 스택에 넣고
- ')'를 만나면 pop
- 근데 pop할게 없다면(스택이 비어있다면) false
- 마지막으로 스택에 남아있는 요소가 있는지를 판별하여 리턴
코드
import java.util.*;
class Solution {
boolean solution(String s) {
boolean answer = true;
Stack<Character> stack = new Stack<>();
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == '(') {
stack.push(s.charAt(i));
} else if(s.charAt(i) == ')'){
if (stack.isEmpty()) {
return false;
}
stack.pop();
}
}
return stack.isEmpty();
}
}
'Development > PS' 카테고리의 다른 글
[Array] Softeer level 2 금고털이 java O(n) 풀이법 (0) | 2024.01.23 |
---|---|
[Basic] Softeer Lv. 1 A+B java 풀이 (+ BufferedReader의 관해) (0) | 2024.01.19 |
[Queue] 프로그래머스 level 2 기능개발 java 풀이 (0) | 2024.01.07 |
[DFS] 프로그래머스 level 3 네트워크 java 풀이 (0) | 2024.01.01 |
[Hash] 프로그래머스 level 3 베스트앨범 java 풀이 (1) | 2023.12.23 |