[백준알고리즘/python3,파이썬] 2675번 문자열 반복 문제 및 해결 소스코드

백준알고리즘 2020.12.28 댓글 임통끼
728x90

 

 

 


백준알고리즘 / No.2675 / 문자열 반복 / python3, 파이썬


 

문제

문자열 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를 출력한다.

 

예제 입력

2
3 ABC
5 /HTP

 

예제 출력

AAABBBCCC
/////HHHHHTTTTTPPPPP

 


해결 코드

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
test = int(input())
result_list = []
 
if test >= 1 and test <= 1000 :
    for count in range(0, test) :
        answer, answer2 = map(str, input().split())
        result = []
 
        if int(answer) >= 1 and int(answer) <= 8 :
            if len(answer2) >= 1 and len(answer2) <= 20 :
                for count2 in range(0len(answer2)):
                    for count3 in range(0int(answer)):
                        result.append(answer2[count2])
 
                result_list.append(result)
 
for count in range(0len(result_list)) :
    print("".join(map(str, result_list[count])))
cs

 

 

line 1 : 테스크 케이스의 개수를 입력받는 부분. input()을 사용
line 2 : 데이터를 저장하기 위해 list 초기화
line 4 : 테스트 케이스의 개수는 1보다 크거나 같고, 1000보다 작거나 같아야 하기 때문에 if문을 사용하여 조건검사
line 5 : 테스트 케이스의 개수만큼 돌아야하기 때문에 for문 사용
line 6 : 두개의 데이터를 입력받는 부분, 공백을 기준으로 쪼개기 위해 split() 사용
line 9 : 테스트의 반복횟수는 1보다 크거나 같고, 8보다 작거나 같이 때문에 if문을 사용하여 조건검사
line 10 : line 6에서 받은 데이터 중 두번째 문자열 데이터는 글자의 수가 적어도 1이고, 20글자를 넘기면 안되기 때문에 if문을 사용하여 조건검사
line 11 ~ 13 : 반복횟수만큼 데이터를 붙여 만들여야하기 때문에 for문을 사용했고, 해당 데이터를 append를 사용하여 result라는 list에 맨뒤에 데이터를 붙인다.
line 15 : 케이스만큼 저장하기 위해 해당 for문에서 result_list에 append한다.
line 17 ~ 18 : result_list의 길이만큼 출력하기 위해서 for문을 사용. range를 이용하여 result_list의 길이만큼 for문을 가동한다.

 

 


결과

 

 

1년전에 python을 이용하여 문제를 해결하였다. 조금 간단한 문제지만 여러번 중첩하여 for문을 사용해야 하기 때문에 조금만 생각을 잘 못하면 틀릴수도 있으니 주의해야한다 !

 

<문자열 반복> 이라는 문제 이름 답게 많은 for문이 사용된 것 같다 ! for문을 사용하지 않고도 왠지 문제를 해결할 수 있을 것 같기도 하다. 

다음번에는 C언어로 한번 문제를 해결해봐야겠다 ~

 

 

 

반응형

댓글