문제 : 

 

입력값으로 하나의 문자열이 주어지고, 이 문자열을 모두 뒤집어서 리턴하면 성공! 사실 이 문제는 너무 쉬워서 포스팅을 스킵하려 했으나, 내가 까먹었다가 다시 기억난 부분이 있어 포스팅을 해 보겠다.

 

아래는 내가 제출해 통과한 코드이다.

class Solution:
    def reverseWords(self, s: str) -> str:
        words = s.split()
        res = []

        for i in words:
            res.append(i[::-1])
        return ' '.join(res)

 

- s.split() : 여기서도 고민한 부분이 있었는데, split의 인자로 ''를 넣어야 하나,  ' '를 넣어야 하나 고민을 하고 검색을 해본 결과, split의 인자가 비어있으면 파이썬은 자동으로 문자열을 공백을 기준으로 나눠준다. words라는 변수 안에 입력값으로 받은 문자열 s를 공백을 기준으로 나누어 준다.

 

- 결괏값을 담을 res 배열을 선언 해준다. 다시 한번 강조하지만, 파이썬의 문자열은 불변의 객체이므로 문자열 원본 자체를 바꿀 순 없고, 새로운 배열에 담아 .join을 이용해 합쳐 문자열로 반환 해야한다.

 

- 이제 words에는 공백을 기준으로 나누어진 문자열들이 담겼을 것이다. for문으로 순회하며 각각의 단어들을 뒤집어 res 배열에 담아준다. 여기서도 등장했다. 문자열을 뒤집는 가장 편한 방법인 파이썬의 문자열, 리스트 슬라이싱을 이용해[::-1] 문자열을 뒤집어 주었다.

 

- return ' '.join(res) 여기서 내가 까먹었다가 다시 기억한 부분이다. 난 처음에 ''.join을 했지만, 이렇게 하니

"s'teL ekat edoCteeL tsetnoc"

이렇게 찍히는것이 아니라

"s'teLekatedoCteeLtsetnoc"

이렇게 찍히는 것이였다. 그래서 어떡하지를 고민 하던 중, .join 메서드에 대해 다시 생각을 해 보았다. join메서드는 앞에 구분자를 지정해 주어야 한다. 앞에 나오는 구분자에 따라 리스트를 문자열로 합친다. 

 

예를들어, 

 

1. ''.join(s) : 이건 s라는 리스트의 모든 요소들을 중간 공백 없이 합친다 예) [a,b,c] => "abc"

 

2. ' '.join(s): 이건 s라는 리스트의 모든 요소들을 공백 하나로 구분지어 합친다. 예) [a,b,c] => "a b c"

 

3. ', '.join(s): 이건 s라는 리스트의 모든 요소들을 쉼표 하나로 구분지어 합친다. 예) [a,b,c] => "a, b, c"

 

4. '! '.join(s): 이건 s라는 리스트의 모든 요소들을 느낌표 하나로 구분지어 합친다. 예) [a,b,c] => "a! b! c"

 

 

 

 

 

 

 

+ Recent posts