inblog logo
|
LHS's Study Space
    알고리즘문제풀기랜덤마라톤

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

    lhs's avatar
    lhs
    Nov 29, 2024
    [랜덤 마라톤] 안정적인 문자열(4889)
    Contents
    1. 문제 풀이 아이디어2. 나의 정답 코드3. 정리
    www.acmicpc.net
    https://www.acmicpc.net/problem/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
    Contents
    1. 문제 풀이 아이디어2. 나의 정답 코드3. 정리

    LHS's Study Space

    RSS·Powered by Inblog