728x90
문제
https://school.programmers.co.kr/learn/courses/30/lessons/12909
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
티어
소요 시간
5분
분류
스택
코드
스택
class Solution {
boolean solution(String s) {
boolean answer = true;
Stack<Character> stack = new Stack<>();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (stack.isEmpty() || c == '(') {
stack.add(c);
}
else {
char pop = stack.pop();
if (pop != '(') {
answer = false;
break;
}
}
}
if (!stack.isEmpty()) {
answer = false;
}
return answer;
}
}
cnt
class Solution {
boolean solution(String s) {
int cnt = 0;
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == '(') {
cnt++;
}
else {
if (--cnt < 0) {
return false;
}
}
}
return (cnt != 0) ? false : true;
}
}
코드 설명
스택을 통해서 '('와 ')'를 짝지어주면 된다.
두 번째 코드는 스택을 사용하지 않으면서 최적화를 한 코드인데 cnt를 통해 괄호의 개수를 센다.
닫힌 괄호일 경우 괄호를 소거한다는 의미로 cnt값을 감소시키는데 이 때 cnt값이 음수가 될 경우 짝이 맞지 않는 상태인 것이기 때문에 이를 분기한다.
728x90
'코딩테스트 > Programmers' 카테고리의 다른 글
[Programmers | Java] 혼자 놀기의 달인 (0) | 2024.03.20 |
---|