Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- 그리디
- 너비우선탐색
- HashMap
- DP
- dynamic programming
- switch
- greedy
- 깊이우선탐색
- Network
- 백준
- boj
- Algorithm
- programmers
- 이분탐색
- 구현
- 해시
- 스프링
- 해시맵
- 네트워크
- 백트래킹
- DynamicProgramming
- 프로그래머스
- 알고리즘
- broadcast
- Backtracking
- 동적계획법
- BFS
- Spring
- 브루트포스
- DFS
Archives
- Today
- Total
옌의 로그
[Algorithm] 올바른 괄호 본문
문제
사용 알고리즘
- 스택 자료구조 (를 쓰지 않아도 가능)
해결방법
- '(' 이 나오면 스택에 데이터 인풋 (암거나 괜찮다)
- ')' 이 나오면 스택에서 데이터 pop
- 스택이 최종적으로 비어있다면 모든 쌍이 맞은 것으로 판단
- But? >> 스택을 쓰지 않고, 단순하게 int 변수 +- 로도 가능
소스코드
사용언어 : Java
1. stack 사용 코드
class Solution {
boolean solution(String s) {
Deque<Integer> st = new ArrayDeque<>();
for(char c : s.toCharArray()) {
if (c == '(')
st.push(1);
else {
if (st.isEmpty())
return false;
else
st.pop();
}
}
if (st.isEmpty()) return true;
return false;
}
}
2. stack 사용 x 코드
class Solution {
boolean solution(String s) {
int balance = 0;
for (int i = 0, n = s.length(); i < n; i++) {
char c = s.charAt(i);
if (c == '(') {
balance++;
} else {
if (balance == 0) return false; // 닫는 게 먼저 나오면 실패
balance--;
}
}
return balance == 0;
}
}
한줄평
스택/큐 섹션에 있으니 당연히 스택으로 푼 건데,
스택을 안써도 풀 수 있는 문제였다. ㅋㅋ 고정관념에 갇혀버려~
'스터디 > 알고리즘' 카테고리의 다른 글
[Algorithm] 프로그래머스 - 네트워크 (5) | 2025.08.25 |
---|---|
[Algorithm] 백준 - 쉬운 최단거리 (14940번) (0) | 2024.05.09 |
[Algorithm] 백준 - LCS (9251번) (0) | 2024.04.20 |
[Algorithm] 백준 - 합이 0 (3151번) (1) | 2024.03.01 |
[Algorithm] 백준 - 진우의 민트초코우유 (20208번) (1) | 2024.02.15 |
Comments