2020년/코테

[파이썬 알고리즘 인터뷰] 문자열 뒤집기

위지원 2020. 12. 15. 00:34

 

github.com/onlybooks/algorithm-interview



시간이 조금 남아서 짧게 하나만 하고 자야겠다.

 

문자열을 뒤집는 방법

 

1. 전통적인 방법: 투포인터 

아래 코드를 보고 왜 굳이 이렇게..? 라고 생각했지만, 가끔 코테에서 라이브러리를 사용하지않고 함수 자체를 구현하라고 한적이 있었다.

def reverseString(self, s:List[str])->None:
    left, right = 0, len(s) -1
    while left < right:
        s[left], s[right] = s[right],s[left]
        left+=1
        right-=1

당연히 리스트는 a.reverse(), [::-1] 슬라이싱을 이용해서도 뒤집을 수 있다. 

 

이.때 공간복잡도 O(1) 제약이 걸린 leetcode는 [::-1]이 먹히지 않으므로 s[:]=s[::-1]을 사용하면 된다.(플랫폼에 대한 이해를 하고 진행해야하는 것...!)

 

 

9093번: 단어 뒤집기

첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는

www.acmicpc.net

시간은 첫번째가 2배 빨랐고, 메모리는 첫번째가 1.5배 더 사용했다.

n = int(input())

res = []

for i in range(n):
    res.append(list(input().split(" ")))
    
for sentence in res:
    for idx,word in enumerate(sentence):
        sentence[idx] = word[::-1]+" "
        
for sentence in res:
    print(''.join(sentence))
n = int(input())

for _ in range(n):
    strs = list(input().split(" "))    
    for idx,word in enumerate(strs):
        strs[idx] = word[::-1]+" "
    print(''.join(strs))