티스토리 뷰

 

[python/백준(boj)]

2675번. 문자열 반복

 

 

www.acmicpc.net/problem/2675

 

2675번: 문자열 반복

문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다

www.acmicpc.net

 


 

파이썬을 제대로 배운적이 없어서

요새 파이썬 문법만 한번 훑어보려고 기본서를 읽고 있는데

문법 관련해서 쉬운 알고리즘 문제도 풀면 좋을 것 같아 오랜만에 백준에서 알고리즘 문제를 풀었다.

문제만 읽어서는 되게 쉬울 줄 알았는데, 알고리즘 문제를 진짜 오랜만에 풀어서 그런가 뜻대로 잘 풀리지 않아 당황...

 


 

 

입력값

테스트 케이스 개수

반복횟수 문자열

=> 테스트케이스 개수를 먼저 받은 다음 반복횟수와 문자열을 같은 줄에 테스트케이스 개수만큼 입력받는다.

 

출력값

반복횟수만큼 반복해 재생성한 문자열

 

풀이

 

<첫번째 풀이>

풀면서 아 이건 아닌데,,, 이렇게 하는거 아닌거같은데,,,

하면서도 다른 분들 답안은 보기 싫고 어떻게든 풀려고 쥐어짜낸 코드인데 진짜 다시 봐도 노답이다.

누가봐도 파이썬 문법 몰라요~~ 하는 코드,,, 빨리 파이썬 변수선언에 익숙해져야 할 것 같다고 절실히 깨닫게 됐다.

    t = int(input())

    # 테스트 케이스 개수가 정해져 있지 않으므로 각각 리스트에 담기
    rlist = []
    slist = []

    # 테스트 케이스 개수만큼 입력 받기
    for i in range(t):
        r, s = input().split()
        rlist.append(r)
        slist.append(s)

    for i in range(t):
        s = slist[i]
        r = rlist[i]
        rslt = ''

        # 파이썬은 문자열 곱셈이 가능하므로 문자열 곱셈으로 새 string 만들기
        for j in range(len(s)):
            rslt = rslt + (s[j] * int(r))

        print(rslt)

 

<두번째 풀이>

도저히 첫번째 풀이는 좀 아닌거같아서 다시 리팩토링한 코드.

전보다는 훨씬 코드가 나아진 것 같지만 아직도 썩 맘에 들진 않는,,,,

진짜 알고리즘 공부 안한게 너무 티나서 쪽팔릴 정도인 것 같다. 앞으로 그래도 틈틈히 쉬운 문제라도 푸는 습관을 들여야겠다.

t = int(input())

# 테스트 케이스 개수만큼 입력 받기
for i in range(t):
    # split() 함수를 사용해 리스트로 입력값 받기
    s = input().split()

    # 파이썬은 문자열 곱셈이 가능하므로 문자열 곱셈으로 새 string 만들기
    for j in s[1]:
        print(j * int(s[0]), end="")
    print()

 

 

채점 결과

댓글
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Total
Today
Yesterday
공지사항
최근에 올라온 글