코딩 테스트
프로그래머스) 올바른 괄호 Lv2
우루쾅
2024. 2. 8. 13:08
728x90
반응형
SMALL
이번에도 래벨 2 도전!
문자열 s 에 랜덤의 (, ) 괄호가 주어지고 괄호를 바르게 짝지었을 때 true, 아닐 경우 false 를 리턴하는 문제이다.
처음 문제를 풀 때 () 코드가 있을 경우 "" 으로 변경을 하는 코드를 작성했다!
돌려보니 문제는 모두 맞는데 효율성의 문제가 발생했다...
class Solution {
boolean solution(String s) {
boolean answer = true;
int cur = 0;
while(s.length() >= 0){
int fur = s.length();
s = s.replaceAll("\\(\\)","");
if(s.length() == 0){
break;
}
if(cur == fur){
break;
}
cur = fur;
}
return s.equals("") ? true : false;
}
}
고민을 해보다가 위 코드에서는 효율성을 고치기 너무 힘들 것 같아서 처음부터 다시 코딩했다;;
( 는 +1, ) 는 -1 로 변경했을 때 총 합이 0이 나오게끔 하고 합이 0보다 작을 경우 리턴을 하는 방식으로 문제를 해결했다!
정답
import java.util.*;
class Solution {
boolean solution(String s) {
int sum = 0;
char crr[] = new char[s.length()];
for(int i=0; i<s.length(); i++){
crr[i] = s.charAt(i);
}
for(char i : crr){
if(i == '(') sum += 1;
else sum -= 1;
if(sum < 0) break;
}
return sum == 0;
}
}
출처
프로그래머스 - https://school.programmers.co.kr/learn/courses/30/lessons/12909
728x90
반응형
LIST