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))