문제
https://school.programmers.co.kr/learn/courses/30/lessons/12909
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이 과정
스택을 활용하여 풀었다.
- 여는 괄호(
(
)라면 스택에 넣어준다. - 닫는 괄호라면(
)
) 스택 제일 위가 여는 괄호인지 확인한다.
- 여는 괄호라면 스택에서 꺼낸다. (짝이 맞으니 없애기)
- 닫는 괄호라면 올바른 괄호가 아니므로
false
를 반환한다.
- 스택이 비었다면
true
를 그렇지 않다면 올바른 괄호가 아니므로false
를 반환한다.
이 문제는 스택 / 큐 카테고리로 분류되어 있지만, 스택을 쓰지 않고도 괄호를 더하고 빼서 해결할 수도 있다.
코드
1) 스택을 활용한 풀이
import java.util.*; class Solution { boolean solution(String s) { Stack<Character> stack = new Stack<>(); for (int i = 0; i < s.length(); i++) { char bracket = s.charAt(i); if (bracket == '(') { stack.push(bracket); } else { if (!stack.empty()) { char beforeBracket = stack.peek(); if (beforeBracket == '(') { stack.pop(); } else { return false; } } else { return false; } } } return stack.empty() ? true : false; } }
2) 스택 활용하지 않은 풀이
class Solution { boolean solution(String s) { int count = 0; for (int i = 0; i < s.length(); i++) { if (s.charAt(i) == '(') { count++; } else { count--; } if (count < 0) { return false; } } return count == 0 ? true : false; } }
'Algorithm > Programmers' 카테고리의 다른 글
[Java] 다리 위를 지나는 트럭 (0) | 2022.10.01 |
---|---|
[Java] 완주하지 못한 선수 (0) | 2022.10.01 |
[Python] H-Index (0) | 2022.09.22 |
[Python] 후보키 (0) | 2021.10.28 |
[Python] 셔틀버스 (0) | 2021.10.27 |