백준 문제 중 2675번, 구현, ‘문자열 반복’
백준 문제 중 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
배운점
-
for문에서 +=연산을 사용할때 대입의 의미를 더 생각해보고 작성 하자.
-
문자열 곱셈이 정말 유용했다.
Leave a comment