For Programmer

백준 2675번 파이썬 문제풀이(문자열 - 문자열반복) 본문

코팅테스트/백준 문제 모음

백준 2675번 파이썬 문제풀이(문자열 - 문자열반복)

유지광이 2021. 9. 3. 15:12
728x90

 

나의코드

t = int(input()) #전체 테스트케이스 입력

for _ in range(t): #테스트 케이스 횟수만큼 돌기
    info = list(map(str, input().split())) # 문자열 반복횟수와 문자열 입력받기
    n = int(info[0]) #문자열 반복횟수 인트로 변환
    s = list(str(info[1])) #문자열의 각각의 원소를 하나씩 리스트에 대입("abc" -> "a","b","c"

    for i in s: #문자열의 각각의 원소에 접근
        print(i * int(n), end="") #각각의 문자마다 반복횟수만큼 곱하여 출력(파이썬은 문자열 곱하기 지원)
    print() #한줄 띄우기

-> 위의 코드를 더 간결하게 만들 수 있다. 여기서 변수 s에 굳이 문자열 info[1] 을 각각의 문자로 나누어 새로운 list에 대입해줬다. ("abc" -> "a","b","c") 이는 반복문을 돌기위해서인데 파이썬은 str 즉 문자열자체도 반복가능한 객체이기 때문에 바로 반복문에 사용이 가능하다. 따라서 다음과 같이 간결하게 만들 수 있다.

 

t = int(input()) #전체 테스트 케이스 입력

for _ in range(t): # 테스트케이스횟수만큼 돌기

    n,s = input().split() #공백으로 두개의 인자를 구분받아 각각의 원소에 대입
    text ="" #출력을 위한 빈문자열 선언
    for i in s: # 파이썬은 str형도 iterable객체이기 때문에 리스트에 담지않아도 바로 반복문에서 각각의 원소(문자)에 접근할 수 있다.("abc" -> "a","b","c")
        text += (i * int(n)) # text라는 변수에 계속해서 각각의 문자 원소를 반복횟수만큼 곱하여 대입
    print(text) #출력

-> 입력도 n,s = input().split() 와 같이 간결하게 처리 가능하며 print(~~~,end="") 를 사용하게 되면 마지막에는 반드시 print() 를 이용하여 한줄 띄어줘야 한다. 그래야 다음 출력때 그 다음줄에서 출력이 가능한대 이를 방지하기 위해서 그냥 text라는 변수에 문자를 넣어 주었다.

728x90
Comments