문제
문자열 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. t에는 테스트 케이스만큼 반복할 숫자를 담아주고 바깥쪽 for문에 조건문으로 넣는다
2. StringTokenizer을 통하여 각 테스트 케이스의 문자의 반복횟수와 문자열을 분리하여준다.
(int loop에 문자의 반복횟수를 담아주고 String str에 문자열을 담아주었다)
3. 안쪽 for문의 조건문은 loop * str.length() 를 줬다.
(4 ABC가 입력되었을때에 AAAABBBBCCCC가 되기 위해서는 총 12번을 반복해야 하는데
loop(4) * str.length()(3) = 12 가 나온다)
4. 문자를 하나씩 더해줄 때 문자열.charAt(len)으로 하나씩 꺼내서 append()에 더해주는데
초기의 len값은 0이며, loop가 4라면 문자열의 각각의 문자들이 4번씩 나와야 한다.
그렇기에 (j+1) % loop == 0이라면 len++ 를 해줘서 다음 문자가 나올 수 있게 해 준 것이다.
(j에 +1이 붙은 이유는 0부터 시작하면 바로 0 % loop = 0이 되어 len이 1 증가하기 때문이다)
5. append()를 이용해 for문에서 문자열이 다 들어간 후 개행하여준다.
#초보 개발자인 글쓴이가 직접 풀었기에 코드의 효율성이 좋지 못할 것이다
혹시 이 글을 보게 된다면 이 사람은 이런 방식을 이용했구나 정도로
참고만 하고 더 좋은 코드들을 보기 바란다...!
'기능,개념 & 알고리즘 > 알고리즘' 카테고리의 다른 글
백준 2941 자바 (0) | 2021.09.02 |
---|---|
백준 1316 자바 (0) | 2021.09.02 |
백준 4344 자바 (0) | 2021.08.31 |
백준 4673 자바 (0) | 2021.08.31 |
백준 10952자바 (0) | 2021.08.24 |