알고리즘 단련장/소프티어

[소프티어] Yeah, but How? 레벨2 자바 풀이 (한양대 HCPC 2023)

dcho 2024. 10. 29. 00:23
SMALL

https://softeer.ai/practice/9498

 

Softeer - 현대자동차그룹 SW인재확보플랫폼

 

softeer.ai

 

 

 

 

문제를 제대로 이해가 잘 안되어서 난해한 문제였다.

 

보통 괄호가 나오는 문제들은 스택을 많이 이용하기에 처음에 스택으로 해결하려고 고민을 많이 했다. 하지만 실패 

 

import java.io.*;
import java.util.Stack;
import java.util.StringTokenizer;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        String s = br.readLine();

        // 1차 고민
        // 괄호 검사를 위한 스택
        //Stack<Character> stackChar = new Stack<>();
        //
        //for (int i = 0; i < s.length(); i++) {
        //    char c = s.charAt(i);
        //    if (c == '(') {
        //        stackChar.push(c);
        //    } else {
        //        if (stackChar.isEmpty()) {
        //            bw.flush();
        //            bw.close();
        //            return;
        //        } else {
        //            stackChar.pop();
        //        }
        //    }
        //}

        // 참고한 풀이
        for (int i = 0; i < s.length() - 1; i++) {
            bw.write(s.charAt(i));
            if (s.charAt(i) == '(' && s.charAt(i + 1) == ')') {
                bw.write("1");
            }
            if (s.charAt(i) == ')' && s.charAt(i + 1) == '(') {
                bw.write("+");
            }
        }
        bw.write(s.charAt(s.length() - 1) + "\n");

        bw.flush();
        bw.close();
    }
}

 

경영아 고맙다.

생각보다 풀이는 간단했고 테스트 케이스를 통과하지 않아도 되는 문제도 있다는게 신기했다. 

 

직접 푸는데 생각이 나지 않아 공식 풀이를 참고 했다. 

https://u.acmicpc.net/e98182a0-15b3-4a42-bfae-37c4c3b2beb0/Editorial-HCPC-2023.pdf

 

이런 문제도 있구나 했다.

좀 더 넓은 시야로 바라보는 습관을 가지고 공부를 더 해야겠다는 생각이 든다.