문제
문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다. S에는 QR Code "alphanumeric" 문자만 들어있다.
QR Code "alphanumeric" 문자는 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\\$%*+-./: 이다.
입력
첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 각 테스트 케이스는 반복 횟수 R(1 ≤ R ≤ 8), 문자열 S가 공백으로 구분되어 주어진다. S의 길이는 적어도 1이며, 20글자를 넘지 않는다.
출력
각 테스트 케이스에 대해 P를 출력한다.
예제 입력 1 복사
2
3 ABC
5 /HTP
예제 출력 1 복사
AAABBBCCC
/////HHHHHTTTTTPPPPP
- Scanner 활용
- StringBuilder 활용
총 3줄을 입력 받아야 하고, 공백 구분해서 입력 받아야 한다.
- T : 테스트 케이스 개수
- R : 문자열 반복 횟수
- S : 문자열
주어진 문자열의 각 요소를 R번 반복한 문자열을 출력해야 한다.
Scanner는 다양한 데이터 타입을 입력받을 수 있다 → 이 문제에선 정수, 문자열 둘 다 입력받아야 하기 때문에 Scanner를 사용했다.
Scanner sc = new Scanner(System.in);
int T = sc.nextInt(); // \\n은 남음.
sc.nextLine(); //버퍼에 남아있던 '\\n'을 읽음
for(int i=0; i<T; i++) //T만큼 반복
{
int R = sc.nextInt();
String S = sc.next();
}
- 이때 String S는 next() 로 받아야 한다.
- next() 는 공백/개행 문자를 자동으로 건너뛰기 때문에 버퍼에 \\n 이 남지 않는다.
- → nextInt() 뒤에 남은 \\n을 nextLine() 이 읽어버려 문제가 생긴다.
StringBuilder sb = new StringBuilder(); //가변 문자열
for(char c : S.toCharArray()){
sb.append(String.valueOf(c).repeat(R));
}
- 문자 c로 S를 순회한다.
- S도 문자 배열로 바꿔서 인덱스 접근이 가능하도록 한다.
- sb는 가변이라 append로 문자를 추가해줄 수 있다.
- repeat(int count) 메서드는 문자열에서만 사용할 수 있기 때문에, char c를 String으로 바꿔줘야 한다. → String.valueOf(c)
char c = 'A';
String str = String.valueOf(c); // "A"
'코딩테스트' 카테고리의 다른 글
99클럽 코테 스터디 4일차 TIL : reverse() (0) | 2025.01.16 |
---|---|
99클럽 코테 스터디 2일차 TIL : Scanner와 BufferedReader (0) | 2025.01.15 |
99클럽 코테 스터디 1일차 TIL + String 접근 방식 (0) | 2025.01.13 |
백준 2일차 - 2840번 (0) | 2022.07.05 |
백준 1일차 - 14681번, 2884번, 2525번 (0) | 2022.07.04 |