티스토리 뷰
문제
문자열 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
풀이
그냥 한눈에 봐도 해야 할 건 명확하다.
1. 각 줄의 숫자와 문자를 분리한다.
2. 문자열 각각을 넣은 리스트를 만든다.
3. 반복한다.
그러므로 input().split()을 이용해 숫자와 문자를 우선적으로 분리해 입력 받아주고,
그 후 문자 각각에 대해서 for j in c의 형태로 반복 할 수 있게 만들면 된다.
in 함수를 쓰게 되면, ABC에서 A가 j에 들어가고, B가 j에 들어가고, C가 j에 들어가고 하는 형식으로 반복이 된다.
a = int(input())
for i in range(a):
b, c = input().split()
q =''
for j in c:
q+= int(b)*j
print(q)
따라서 다음과 같이 간결한 코드를 작성할 수 있다.
q=''는 문자열을 정의해서 +=를 쓰기 위해서 넣어준 것이다.
어쩌다보니 for for 문을 쓰게 되었는데, 테스트 케이스의 개수가 1000이라 가능했던 것이다.
만약 테스트 케이스의 개수가 기본 10만을 넘어간다면 for for 문은 쓰지 말자. 시간 복잡도롤 인한 메모리 사용량 때문에 속도가 느려질 뿐더러 시간 초과가 날 수 있다.