백준 2675번 문제 풀기
https://www.acmicpc.net/problem/2675
2675번: 문자열 반복
문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다
www.acmicpc.net
문제 설명
문제
문자열 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
|
예제 출력 1
|
2 3 ABC 5 /HTP |
AAABBBCCC
/////HHHHHTTTTTPPPPP |
알고리즘 및 설명
이 문제는 비교적 쉬운 난이도라고 생각된다. 먼저 케이스 개수를 입력받아서 그 개수만큼 반복문을 돌렸다.
한 줄씩 반복 횟수와 반복할 문자를 map 함수를 사용하여 받아들이고 반복할 문자열의 각각의 문자를 반복 횟수만큼 반복하여 출력시켰다.
이때 주의할 점은 맨 마지막 줄에 print(' ')를 작성하지 않으면 예제 입력 1의 경우 AAABBBCCC와 /////HHHHHTTTTTPPPPP 간의 줄 간격이 생성되지 않는다. 그래서 처음에 이것 때문에 틀렸다가 수정하여 두번째로 맞출 수 있었다.
- sunning algorithm
Case = int(input())
for i in range(Case):
N, S = map(str, input().split())
N = int(N)
S = list(S)
for j in range(len(S)):
print(S[j] * N, end = '')
print('')
찾아보니, 꼭 반복 횟수와 반복할 문자를 map 함수를 사용하여 받아들일 필요가 없었다. 그냥 N과 S를 input.split()를 사용하여 입력받아 반복횟수만큼 프린트할 때 N만 정수형으로 바꾸어주면 간단히 해결이 된다.
수정한 코드는 아래와 같다.
- new sunning algorithm
Case = int(input())
for i in range(Case):
N, S = input().split()
for j in range(len(S)):
print(S[j] * int(N), end = '')
print('')
'파이썬(Python) > 백준(Baekjoon) 문제 풀이' 카테고리의 다른 글
[백준, python 파이썬] 1152번 : 단어의 개수(문자열) (0) | 2022.03.23 |
---|---|
[백준, python] 1157번 : 단어 공부(문자열) (0) | 2022.03.21 |
[백준, python] 10809번 : 알파벳 찾기(문자열) (0) | 2022.03.21 |
[백준, python] 11654번 : 아스키 코드(문자열) (0) | 2022.03.21 |
[백준, python] 1065번 : 한수(함수) (1) | 2022.03.21 |