jeongwon
[백준 JAVA] 2675번 - 문자열 반복 본문
문제 :
2675번: 문자열 반복
문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다
www.acmicpc.net
약식 순서도 :
- 테스트케이스 개수를 입력받으면서, 그 값에 해당하는 크기의 배열을 생성한다. (String[], BufferedReader)
- 반복할 횟수와 문자열을 테스트케이스 개수만큼 반복 입력받아 생성해둔 배열에 저장한다. (for문)
- 공백을 기준으로 반복할 횟수를 분리한다. 나머지 문자열은 기존 배열의 자리에 저장한다. (int, for문, Stringtokenizer)
- 저장한 횟수 만큼 문자열의 각 자리를 반복한다. (String.charAt())
나의 답안 :
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));
String[] arr = new String[Integer.parseInt(br.readLine())];
for(int i=0; i<arr.length; i++)
arr[i]=br.readLine();
br.close();
for(int i=0; i<arr.length; i++) {
StringTokenizer st = new StringTokenizer(arr[i]," ");
int r = Integer.parseInt(st.nextToken());
arr[i]=st.nextToken();
for(int j=0; j<arr[i].length(); j++) {
for(int k=0; k<r; k++)
System.out.print(arr[i].charAt(j));
}
System.out.println();
}//outer for
}
}
메모리, 시간 : 14164KB, 144ms
개선 답안 : (참고) https://st-lab.tistory.com/63
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 r = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
for(int i=0; i<r; i++) {
String[] arr = br.readLine().split(" "); //한 줄을 읽어 2개짜리 배열에 구분자를 기준으로 한 각 값이 저장
int n = Integer.parseInt(arr[0]);
for(int j=0; j<arr[1].length(); j++) {
for(int k=0; k<n; k++)
sb.append(arr[1].charAt(j));
}
sb.append("\n");
}
System.out.println(sb);
br.close();
}
}
메모리, 시간 : 14064KB, 128ms
Stringtokenizer 대신 String.split() 메소드를 활용해 한 줄을 읽어 구분자를 기준으로 나눈 2개의 값을 2개 크기의 배열에 저장할 수 있다.
StringBuilder의 사용으로 소요시간과 메모리가 줄었다.
String (Java SE 18 & JDK 18)
All Implemented Interfaces: Serializable, CharSequence, Comparable , Constable, ConstantDesc The String class represents character strings. All string literals in Java programs, such as "abc", are implemented as instances of this class. Strings are constan
docs.oracle.com
'오늘의 문제' 카테고리의 다른 글
| [백준 JAVA] 1152번 - 단어의 개수 (0) | 2022.06.07 |
|---|---|
| [백준 JAVA] 1157번 - 단어 공부 (0) | 2022.06.07 |
| [백준 JAVA] 10809번 - 알파벳 찾기 (0) | 2022.06.02 |
| [백준 JAVA] 11720번 - 숫자의 합 (0) | 2022.06.02 |
| [백준 JAVA] 11654번 - 아스키 코드 (0) | 2022.06.02 |