반응형
SMALL
https://programmers.co.kr/learn/courses/30/lessons/12909
- 스택 사용 코드
- 시간과 효율성 모두 더 오래 걸림
import java.util.*;
class Solution {
boolean solution(String s) {
boolean answer = false;
Stack<Character> stack = new Stack<>(); // '()' 같은 문자이므로 Character
for(int i = 0; i < s.length(); i++) {
if(s.charAt(i) == '(') {
stack.push(s.charAt(i)); // '('이면 스택에 넣기
} else { // ')' 이면
if(stack.isEmpty()) { // ')' 인데 스택이 비어있으면 뭔가 잘못되었다는거니까
return false; // false 반환
}
stack.pop(); // 스택이 비어있지않으면 스택에 '('가 있다는거니까 쌍 맞춰준다는 의미로 '(' 빼주기
}
}
if(stack.isEmpty()) { // 위의 쌍맞추기가 다 끝나고 스택이 비어있으면
answer = true; // 쌍이 잘 맞춰졌다는 의미이므로 true 반환
}
return answer; // 스택이 비어있지않고 뭔가 남아있으면 쌍이 안맞다는 의미이므로 false 반환
}
}
- 스택 사용 안한 코드
class Solution {
boolean solution(String s) {
boolean answer = false;
int count = 0;
for(int i = 0; i < s.length(); i++) {
if(s.charAt(i) == '(') {
count++;
}
if(s.charAt(i) == ')') {
count--;
}
if(count < 0) {
break;
}
}
if(count == 0) { // 0이라는건 쌍이 맞춰졌다는 의미
answer = true;
}
return answer;
}
}
반응형
LIST
'JAVA > Algorithm' 카테고리의 다른 글
[프로그래머스/java] 최솟값 만들기 (0) | 2021.01.07 |
---|---|
[프로그래머스/java] 숫자의 표현 (완전탐색) (0) | 2021.01.05 |
[프로그래머스/java] 다음 큰 숫자 (2진수의 1개수 세기 - bitCount()) (0) | 2021.01.03 |
[프로그래머스/java] 구명보트 (0) | 2021.01.02 |
[프로그래머스/java] 위장 (HashMap - 가능한 조합의 개수) (0) | 2021.01.02 |