Etc/알고리즘

[softeer] 9498

jjuni_96 2024. 7. 29. 21:32
728x90

문제

 

 

제약조건

 

메모리 제약

 

 

입/출력

 

문제 분석

제대로된 수식을 만들려면 아래와같은 규칙을 따르면 될 것 같다.

1. )( : 가운데에 + 입력
2. () : 가운데에 1 입력

 

풀이 1

import java.io.*;
import java.util.*;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));

        // https://softeer.ai/practice/9498

        String[] input = bf.readLine().split("");
        String answer = input[0];

        for (int i = 1; i < input.length; i++) {
            // )(
            if (")".equals(input[i-1]) && "(".equals(input[i])) {
                answer += "+" + input[i];
            }else if ("(".equals(input[i-1]) && ")".equals(input[i])) {// ()
                answer += "1" + input[i];
            } else {
                answer += input[i];
            }
        }
        System.out.println(answer);
    }
}

 

실패

테스트 케이스 1번에서 실패를 했지만 모든 수들 중 하나만 맞으면 된다그래서 제출해보았다.
그랬는데 시간초과.....

String 자체를 변형하려고 하니 시간이 많이 초과되는 것 같았다.
그래서 StringBuilder를 사용하여 처리하기로 하였다.

 

풀이

import java.io.*;
import java.util.*;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));

        long beforeTime = System.currentTimeMillis(); //코드 실행 전에 시간 받아오기
        // https://softeer.ai/practice/9498

        String[] input = bf.readLine().split("");
        StringBuilder sb = new StringBuilder();
        sb.append(input[0]);

        for (int i = 1; i < input.length; i++) {
            // )(
            if (")".equals(input[i-1]) && "(".equals(input[i])) {
                sb.append("+").append(input[i]);
            }else if ("(".equals(input[i-1]) && ")".equals(input[i])) {// ()
                sb.append("1").append(input[i]);
            } else {
                sb.append(input[i]);
            }
        }
        System.out.println(sb);
    }
}

 

성공

 

 

String, Stringbuilder 시간 비교

Stringbuilder의 처리속도가 적을 것이라고 예상은 했는데 얼마나 차이가 날지 확인해보고싶어서 측정을 해봤다.

많으면 3~4초, 적으면 1~2초정도 차이가 났었다... String 값을 바꿀 일이 이쓸대는 StringBuilder를 쓰는걸로..

 

 

링크

https://softeer.ai/practice/9498

 

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

 

softeer.ai

 

728x90
반응형
LIST