프로그래머스 올바른 괄호 Java 풀이
1. 문제
2. 풀이
class Solution {
boolean solution(String s) {
boolean answer = true;
int[] ints = s.chars().toArray();
int sum = 0;
for (int e : ints) {
if (e == '(') {
sum += 1;
} else {
sum -= 1;
}
if (sum < 0) {
answer = false;
}
}
if (sum != 0) {
answer = false;
}
return answer;
}
}
문제의 핵심은
1. 괄호는 닫기 전에 항상 열려야 한다. -> 닫은 횟수가 여는 횟수를 초과하면 안된다.
2. 괄호의 열고 닫은 횟수의 총 합은 0 이 되어야 한다.
String 으로 들어온 괄호 문자열 하나하나를 받기 위해 int형 배열로 바꿔주었고 열고 닫은 횟수의 합의 정보를 담을 sum 을 정의했다.
열는 괄호일 경우 +1, 닫는 괄호일 경우 -1 을 해주었으며
'1' 을 만족시키기 위해 sum 이 음수가 되면 false 를 반환하도록 했다.
마지막으로 반복문을 탈출한 후 '2' 를 만족하지 않는 경우 false 를 반환하도록 하면 원하는 결과를 얻을 수 있다.
'알고리즘 문제풀이' 카테고리의 다른 글
[Do it! 알고리즘 코딩 테스트 자바편] 알고리즘 공부 (01) (1) | 2023.03.14 |
---|---|
(프로그래머스) 두 큐 합 같게 만들기 with java - 1번 오류, 시간초과 오류, 20번대 오류 해결 방법 (1) | 2022.10.14 |
댓글