문제
제출한 코드
class Solution {
public boolean isValid(String s) {
char[] chars = s.toCharArray();
char[] openBracketList = new char[5001];
if (!isOpenBracket(chars[0])) {
return false;
}
int openBracketCount = 0;
for (char c : chars) {
if (isOpenBracket(c)) {
openBracketList[openBracketCount++] = c;
} else {
try {
if (openBracketCount == 0) {
return false;
}
if (c != getProperCloseBracket(openBracketList[openBracketCount - 1])) {
return false;
} else {
openBracketCount--;
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
return openBracketCount == 0;
}
private boolean isOpenBracket(char character) {
return character == '('
|| character == '{'
|| character == '[';
}
private char getProperCloseBracket(char character) throws Exception {
switch (character) {
case '(':
return ')';
case '{':
return '}';
case '[':
return ']';
}
throw new Exception();
}
}
잘한점
개선할점
- 변수의 범위를 제대로 보지 않아 char 배열 할당을 2번이나 제대로 하지 않았음
- openBracket만 있는 조건을 계산해주지 않았었음
- 배열을 사용했기 때문에 memory usage가 너무 높다 다른 방법을 사용하여 개선할 수 있을 것 같음
