import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
for(int i=0;i<T;i++){
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int R = Integer.parseInt(st.nextToken());
String str = st.nextToken();
for(int j=0;j<str.length();j++)
{
for(int k=0;k<R;k++){
System.out.printf("%c", str.charAt(j));
}
}
System.out.println();
}
}
}
1. 테스트케이스의 개수인 T를 입력받는다.
2. 문자를 반복할 횟수 R과 문자열 str을 StringToknizer로 쪼개서 따로 저장한다.
3. 문자열 str의 문자들을 각각 R번씩 반복해 출력한다.
위 코드는 필자가 이러한 순서로 작성한 코드인데, 더 개선할 수 있는 점이 없을지 다른 분들이 작성한 코드를 찾아보았다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int T = Integer.parseInt(br.readLine());
for(int i=0;i<T;i++){
String[] str = br.readLine().split(" ");
int R = Integer.parseInt(str[0]);
for(byte val : str[1].getBytes()){
for(int j=0;j<R;j++){
sb.append((char)val);
}
}
sb.append('\n');
}
System.out.print(sb);
}
}
StringTokenizer를 split으로 대체했고, StringBuilder를 활용해 System.out.printf를 호출하는 횟수를 줄였다.
출력문을 호출하는 횟수를 줄이는 것이 시간 단축에 도움이 많이 되는 것 같다.
StringBuilder를 좀 더 친숙하게 사용할 수 있도록 노력해야겠다.
'[BOJ] - JAVA' 카테고리의 다른 글
[백준] 1152 : 단어의 개수 JAVA 풀이 (0) | 2022.05.14 |
---|---|
[백준] 1157 : 단어 공부 JAVA 풀이 (0) | 2022.05.14 |
[백준] 10809 : 알파벳 찾기 JAVA 풀이 (0) | 2022.05.14 |
[백준] 11720 : 숫자의 합 JAVA 풀이 (0) | 2022.05.14 |
[백준] 11654 : 아스키 JAVA 풀이 (0) | 2022.05.14 |