1. 문제
문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다.
2. 코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int n= sc.nextInt();
for(int i=0;i<n;i++) {
int num = sc.nextInt();
String str = sc.next();
for(int j=0;j<str.length();j++) {
for(int k=0;k<num;k++) {
System.out.print(str.charAt(j));
}
}
System.out.println();
}
sc.close();
}
}
3. 풀이
처음엔 엄청 복잡하게 생각했었는데, 자바 메소드를 이용하면 별거 아닌 문제였다. 내 고민은 크게 두가지였다.
(1) "3 ABC" 와 같이 반복할 횟수와 문자열을 어떻게 입력받고 분리할지?
(2) "ABC" 문자열의 각 원소"A","B","C"를 어떻게 뽑아낼까,, split을 이용해서 분리를 해야되나..?
이것 저것 방법을 찾아보니 해결방법은 별거 아니었다
(1) 각각 따로 입력받으면 된다. 한 줄씩 입력받지 않고 scanner.nextInt()와 scanner.next()를 이용해서 따로 입력받으면 된다. 한 줄! 이라는 생각을 버리면 된다.
대신 유의할 점은 nextLine()으로 입력받으면 안된다! 입력과정에서 엔터값을 입력받을 때까지 공백을 포함해서 한줄을 읽어버린다.
처음에 생각한 방식은 nextLine()을 이용해서 split(" ")을 통해 나눌 생각이었지만, 더 편한 방법이 있기에 취소
(2) charAt을 이용해서 문자 뽑기
String변수.charAt(index)를 이용하면 index에 해당하는 문자를 뽑을 수 있다
4. 링크
https://www.acmicpc.net/problem/2675
'Computer Science > 자료구조와 알고리즘' 카테고리의 다른 글
[Python] 수행시간과 메모리 사용량 측정 (0) | 2021.07.16 |
---|---|
[프로그래머스/JAVA] 해시 - Lv1 완주하지 못한 선수 (2) | 2021.07.14 |
[Algorithm] Exhaustive Search(완전검색), Greedy Algorithm(탐욕 알고리즘), Sort(정렬) (0) | 2021.07.07 |
[JAVA] 백준 10809번 : 알파벳 찾기 (0) | 2021.03.30 |
[알고리즘] 역순 정렬 및 값 교환 (0) | 2021.02.11 |