카테고리 없음
✔ 프로그래머스 - 올바른 괄호 [JAVA]
얘진
2023. 4. 15. 22:27
프로그래머스 > 코딩테스트 연습 > 스택/큐 > 올바른 괄호
https://school.programmers.co.kr/learn/courses/30/lessons/12909
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
나의 풀이방법
언어는 자바로 !
import java.util.*;
class Solution {
boolean solution(String s) {
boolean answer = true;
List<Character> list = new ArrayList<>();
for (int i = 0; i < s.length(); i++) {
if (list.size() == 0) {
list.add(s.charAt(i));
} else if (list.get(list.size()) == '(' && s.charAt(i) == ')') {
list.remove(list.size());
} else {
list.add(s.charAt(i));
}
}
if (list.size() != 0) {
answer = false;
}
return answer;
}
}
IndexOutOfBoundsException이 발생했는데, 사유는 List의 size와 index 간의 크기 차이였다.
List에 1개가 add가 되면 List의 size는 1이 되지만,
add된 인덱스 번호는 0이 되어 get 할 때 0으로 조회한다.
그렇기에 list에서 get 하거나 remove 할 때 index로 수행하기 때문에 list의 사이즈
즉 크기로 비교할 때는 -1을 해주어야 한다.
import java.util.*;
class Solution {
boolean solution(String s) {
boolean answer = true;
List<Character> list = new ArrayList<>();
for (int i = 0; i < s.length(); i++) {
if (list.size() == 0) {
list.add(s.charAt(i));
} else if (list.get(list.size() - 1) == '(' && s.charAt(i) == ')') {
list.remove(list.size() - 1);
} else {
list.add(s.charAt(i));
}
}
if (list.size() != 0) {
answer = false;
}
return answer;
}
}