728x90
반응형
문제 설명
괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어
- "()()" 또는 "(())()" 는 올바른 괄호입니다.
- ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.
'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.
제한사항
- 문자열 s의 길이 : 100,000 이하의 자연수
- 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.
입력예제
s | answer |
"()()" | true |
"(())()" | true |
")()(" | false |
"(()(" | false |
풀이
import java.util.*;
class Solution {
boolean solution(String s) {
boolean answer = true;
// char 배열로 바꾸기
char[] charArr = s.toCharArray();
int open = 0;
int close = 0;
// ( 일때 open++ 해주고 ) 일때 close++ 해주기
for (int i = 0; i < charArr.length; i++) {
if (charArr[i] == '('){
open++;
}else {
close++;
}
// 무조건 open이 더 커야하기 때문에 close 가 더 커지면 false 해주기.
if (close > open){
answer = false;
break;
}
}
// open == close여야 하기때문에 다르다면 false 해주기
if (open != close){
answer = false;
}
return answer;
}
}
정확성 보다 효율성에 더 까다로운 문제라 이것저것 찾아보면서 알게 된 점은
string보다 char이 시간복잡도 상 효율적이라는 것.
string을 배열로 만들어야 했는데 .toCharArray 를 쓰는 것이 split보다 효율적이었다.
728x90
반응형
'프로그래머스' 카테고리의 다른 글
[JAVA] 프로그래머스 K번째수 (0) | 2023.07.05 |
---|---|
[JAVA] 프로그래머스 더 맵게 (0) | 2023.06.24 |
[JAVA] 프로그래머스 기능개발 (0) | 2023.05.31 |
[JAVA] 프로그래머스 같은 숫자는 싫어 (0) | 2023.05.29 |
[JAVA] 프로그래머스 의상 (0) | 2023.05.25 |