[랜덤 마라톤] 안정적인 문자열(4889)

lhs's avatar
Nov 29, 2024
[랜덤 마라톤] 안정적인 문자열(4889)
notion image
notion image

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

LHS's Study Space