파이썬(Python)/백준(Baekjoon) 문제 풀이

[백준, python] 2675번 : 문자열 반복(문자열)

sunning 2022. 3. 21. 16:18
728x90
반응형

백준 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('')

 

 

728x90
반응형