반응형
SMALL
https://programmers.co.kr/learn/courses/30/lessons/12909
코딩테스트 연습 - 올바른 괄호
괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 ()() 또는 (())() 는 올바른 괄호입니다. )()( 또는 (()( 는 올바르지 않은 괄호
programmers.co.kr
- 스택 사용 코드
- 시간과 효율성 모두 더 오래 걸림
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 |