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
'코딩 테스트' 카테고리의 다른 글
프로그래머스) [PCCE 기출문제] 10번 / 데이터 분석 Lv1 (2) | 2024.02.11 |
---|---|
프로그래머스) [PCCP 기출문제] 1번 / 붕대 감기 Lv1 (0) | 2024.02.09 |
프로그래머스) 이진 변환 반복하기 Lv2 (2) | 2024.02.08 |
프로그래머스) 예산 Lv1 (0) | 2024.02.07 |
프로그래머스) 키패드 누르기 Lv1 (0) | 2024.02.07 |