[백준] 문자열 반복(Python)

규갓 God Gyu·2024년 7월 20일

백준

목록 보기
10/96

문제

문자열 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

최종 코드

def repeat_characters(T, cases):
    results = []
    
    for case in cases:
        R, S = case
        R = int(R)
        P = "".join([char * R for char in S])
        results.append(P)

    return results

# 입력 처리
T = int(input())
cases = [input().split() for _ in range(T)]

# 결과 계산
results = repeat_characters(T, cases)

# 결과 출력
for result in results:
    print(result)

이 문제도 모르는 처리방법이 있어서 먼저 보고 나중에 풀어보겠다

풀이 과정

문제 이해
입력
1. 첫 줄의 테스트 케이스 개수 T
2. 그 다음 각 테스트 케이스마다 반복 횟수 R과 문자열 S
출력
각 테스트 케이스마다 문자열 S의 각 문자 R번 반복하여 생성된 새로운 문자열 P 출력

  1. 함수 정의
    repeat~~~ 함수는 테스트 케이스의 개수(T)와 테스트 케이스 리스트(cases)를 인자로 받음
  • results 리스트를 초기화하여 각 테스트 케이스의 결과를 저장
   각 테스트 케이스마다 case 즉 R번 S반복해서 cases 리스트에 저장하는 과정임(결론)
   
   3 ABC가 입력되면 ['3', 'ABC']로 분리됨
  • 각 테스트 케이스마다 R과 S를 추출하고, S의 각 문자를 R번 반복하여 문자열 P를 생성
    여기서 P = ''.join([char * R for char in S])를 분석해보면

for문에서 char라는 변수로 S에 대해 담아준 후, 각 문자열을 R번씩 반복해서 []안에 담아준 후,
''.join을 통해 []의 각 요소를 하나의 문자열로 결합시킴
ex) ['AAA','BBB','CCC'] => 'AAABBBCCC'

  • 그렇게 생성된 P를 results 리스트에 추가

  • 그리고 최종적으로 for result in results 반복문을 토해 문자열을 출력시킴

낼 다시풀기!!

팀 스터디 후 더 좋은 코드

# 입력할 횟수
number = int(input())

# 입력된 횟수만큼
for i in range(number):
	# 반복할 횟수와 반복할 문자열 받기
    R, S = input().split(' ')
    # int, list로 변환
    R = int(R)
    S = list(S)
    
    # list 돌면서 각 요소 입력된 횟수만큼 출력
    # end 사용해 기존  print에 이어서 출력
    for j in range(len(S)):
        print(S[j] * R, end='')
    print('')

몰랐던 부분

end =''를 사용해야 각 문자 반복 결과가 아랫줄이 아닌 이어서 출력됨
print('')를 사용해야 각 테스트 케이스의 결과를 출력한 후 줄 바꿈을 해줌

profile
웹 개발자 되고 시포용

0개의 댓글