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
'Etc > 알고리즘' 카테고리의 다른 글
| [softeer] 6270 (0) | 2024.08.02 |
|---|---|
| [softeer] 6280 (1) | 2024.07.29 |
| [softeer] 6266 (0) | 2024.07.25 |
| [softeer] 6269 (1) | 2024.07.24 |
| [softeer] 6282 (1) | 2024.07.24 |