시작시 테스트 케이스 개수를 입력받고
각 테스트 케이스 당 첫번째 배열에는 문자열 수, 두번째 배열에는 문자열을 입력한다.
그러면 문자열 수 만큼 각 문자가 복사가 되는 것을 구현하는 문제이다.
여기서 중요한 것은 list(input.split()) 으로 반복적으로 입력받으면
리스트의 인덱스 0, 1이 겹쳐지기 때문에 값이 새로 추가되는게 아닌, 갱신이 되어버린다.
list명.append.(a)식으로 해도 인덱스 넘버가 겹쳐져서 그런지 안된다.
풀이:
cnt = int(input()) #테스트 케이스 수 입력
words = [] #각 테스트 케이스당 숫자와 문자 입력받을 리스트
for _ in range(cnt):
word = list(input().split())
words.extend(word) #append가 아닌 extend()로 받아야 인덱스넘버가 그 다음으로 이어짐
for i in range(cnt): #각 테스트 케이스 출력
j = int(words[i * 2]) #각 테스트 숫자
temp = words[i * 2 + 1] #각 테스트 문자
for k in temp:
print(k * j, end='')
print()
내가 계속 책도 찾아보고 인터넷 찾아보며 문제를 해결할 수 있었던 답은 extend()를 활용해서
리스트의 인덱스 넘버를 증가시켜서 갱신 문제를 해결하는 것이었다.
문득 이 글을 쓰면서 다른사람은 어떻게 풀었는지 찾아보았다.
t = int(input())
for i in range(t):
num, s = input().split() #각 테스트 케이스의 숫자, 문자를 각각의 변수에 담음
text = ''
for i in s:
text += int(num) * i
print(text)
출처:https://pacific-ocean.tistory.com/41
백준 알고리즘 2675번(python 파이썬)
문제 링크: https://www.acmicpc.net/problem/2675 2675번: 문자열 반복 문제 문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번
pacific-ocean.tistory.com
정말 간결하게 문제를 잘 풀었다.
애초에 두 값을 같은 리스트에 담을 생각이 아닌, 숫자 변수, 문자 변수에 따로 담아서
문제를 쉽게 해결하였다.
역시 파이썬 고수들은 너무 많은것 같다.
'코딩' 카테고리의 다른 글
백준 5622번 다이얼 파이썬 (0) | 2022.10.17 |
---|---|
백준 2908번 상수 파이썬 (0) | 2022.10.14 |
백준 4673번 셀프넘버 파이썬 (0) | 2022.10.12 |
백준 4344번 평균은 넘겠지 초보 풀이 (0) | 2022.10.11 |
개발 노트 시작 동기 (0) | 2022.09.24 |