

1. 문제 풀이 아이디어
Stack
을 사용할 필요 없이, 여는 중괄호의 수를count
로 계산하여 문제를 해결할 수 있다.
2. 나의 정답 코드
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
StringBuilder stringBuilder = new StringBuilder();
int index = 1;
String line;
while (!(line = bufferedReader.readLine()).startsWith("-")) {
int result = 0;
int count = 0;
for (char c : line.toCharArray()) {
if (c == '{') {
count++;
} else {
if (count < 1) {
result++;
count++;
} else {
count--;
}
}
}
result += count / 2;
stringBuilder.append(index++).append(". ").append(result).append('\n');
}
System.out.print(stringBuilder);
bufferedReader.close();
}
}
3. 정리
- 여는 중괄호가 나오면
count
를 증가시킨다.
- 닫는 중괄호가 나오면:
count
가 0보다 작으면 잘못된 입력이므로result
를 증가시키고, 여는 중괄호로 바뀐 것으로 간주해count
를 증가시킨다.count
가 1 이상이면, 여는 중괄호 하나를 닫을 수 있으므로count
를 감소시킨다.
- 모든 문자를 읽은 후
count
가 남아 있다면, 이는 여는 중괄호가 남은 것이므로count
의 절반을 닫는 중괄호로 변경하여result
에 추가한다.
- 이렇게 계산된
rusult
값을 출력하여 문제를 해결한다.
Share article