1 minute read

백준 문제 중 2675번

https://www.acmicpc.net/problem/2675

문제

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


풀이

num = int(input())
answers =[]

for i in range(num):
  
    # 공백을 기준으로 repeat 과 string데이터가 나뉨
    rs = input().split()
    repeat = int(rs[0])
    stri = rs[1]
 
    # 아래 for 문이 끝날때마다 p초기화
    p = ''
    for s in stri:
        p=s*repeat

        #issue1
        p+=p
        print(p)
    answers.append(p)
        

for answer in answers:
    print(answer)
2
3 ABC
AAAAAA
BBBBBB
CCCCCC
5 \HTP
\\\\\\\\\\
HHHHHHHHHH
TTTTTTTTTT
PPPPPPPPPP
CCCCCC
PPPPPPPPPP

Issue1

잘못된 대입 설정

x=1
x+=x
print(x)
x+=x
print(x)
2
4

p+=p 는 p=p+p를 뜻하고 프로그램이 의도치않게 흘러갔고, 아래와 같이 해결했다.

num = int(input())
answers =[]

for i in range(num):
  
    # 공백을 기준으로 repeat 과 string데이터가 나뉨
    rs = input().split()
    repeat = int(rs[0])
    stri = rs[1]

    # 아래 for 문이 끝날때마다 p초기화
    p = ''
    for s in stri:
        temp=s*repeat

        #issue1 해결후
        p+=temp
        print(p)
    answers.append(p)
        

for answer in answers:
    print(answer)
2
3 ABC
AAA
AAABBB
AAABBBCCC
5 \HTP
\\\\\
\\\\\HHHHH
\\\\\HHHHHTTTTT
\\\\\HHHHHTTTTTPPPPP
AAABBBCCC
\\\\\HHHHHTTTTTPPPPP

배운점

  1. for문에서 +=연산을 사용할때 대입의 의미를 더 생각해보고 작성 하자.

  2. 문자열 곱셈이 정말 유용했다.

Leave a comment