Home Reverse String II
Post
Cancel

Reverse String II

Leetcode Problem

Reverse String II

문자열 s와 숫자 k가 주어졌을 때, k번씩 건너뛰면서 첫번째 문자열은 뒤집고 다음 문자열은 뒤집지 않는 방식으로 끝까지 구한 문자열을 구하는 문제입니다.

1
2
3
4
5
6
class Solution:
    def reverseStr(self, s: str, k: int) -> str:
        s1 = ""
        for i in range(0, len(s), k):
            s1 += s[i:i + k][::-1] if i // k % 2 == 0 else s[i:i + k]
        return s1

for 문을 돌면서 번갈아서 뒤집고 뒤집지 않은 문자열들을 전부 더합니다.
여기서 ::-1 연산에서 뒤집는 연산이 먼저 실행되므로 s[i:i + k][::-1]로 두번에 나눠서 문자열을 뒤집어야만 원하는 위치의 문자열을 뒤집을 수 있습니다.

1
2
3
class Solution:
    def reverseStr(self, s: str, k: int) -> str:
        return ''.join([ s[i:i + k][::-1] if i // k % 2 == 0 else s[i:i + k] for i in range(0, len(s), k) ])

고민해서 한 줄로 줄일 수 있었습니다.





참고

This post is licensed under CC BY 4.0 by the author.