https://softeer.ai/practice/7703
처음에 구현했는데 시간초과가 떠서 당황했다..
String answer = "";
for(int n = 0; n < N; n++) {
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
String Si = st.nextToken();
String tArr[] = st.nextToken().split("");
Si = Si.toUpperCase();
int sIndex = Si.indexOf("X");
answer += (tArr[sIndex]).toUpperCase();
//answer += (Ti.substring(sIndex, sIndex+1)).toUpperCase();
}
System.out.println(answer);
위에 answer 문자열에 + 식으로 했는데 이런식으로 하면 시간초과가 뜨게 된다.
아래 블로그에 왜 시간초과가 뜨는지 잘 설명되어있다.↓
https://velog.io/@myhuon/%EB%B0%B1%EC%A4%80-%EC%8B%9C%EA%B0%84%EC%B4%88%EA%B3%BC-%ED%95%B4%EA%B2%B0
Java로 문자열 구현 시 시간초과를 항상 염두해둬야한다.
StringBuilder쓰고 BufferedReader를 써야 시간초과를 피하는 것 같다.
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
for(int n = 0; n < N; n++) {
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
String Si = st.nextToken();
//String Ti = st.nextToken();
String tArr[] = st.nextToken().split("");
Si = Si.toUpperCase();
int sIndex = Si.indexOf("X");
sb.append( (tArr[sIndex]).toUpperCase() );
//sb.append( (Ti.substring(sIndex, sIndex+1)).toUpperCase() );
}
String answer = sb.toString();
System.out.println(answer);
}
}