코딩테스트(python)

6장 1~3번 문제

Dragon_yun 2021. 5. 16. 18:25

6장 1번

  • 문자열 활용 함수

isalnum()

문자열이 영어,한글 혹은 숫자로 되어있으면 True, 아니면 False (공백도 False를 리턴한다.)

lower()

문자열 영어의 대문자를 소문자로 변환한다.

pop()

리스트의 맨 마지막 요소를 돌려주고 그 요소는 삭제한다. 단, pop(0)을 하면 인덱스의 맨 앞의 값을 가져올 수 있다.

답지 풀이1(pop)

class Solution:
    def isPalindrome(self, s:str) -> bool:
        strs = []
        for char in s:
            if char.isalnum():
                strs.append(char.lower())
        while len(strs) >1: #문자열이 1개 남을때까지
            if strs.pop(0) !=strs.pop(): #맨앞에서부터 pop을 한것과 맨뒤에서부터pop을 한것을 비교
                return False
        return True 

Deque, collection

답지 풀이2(데크 자료형)

class Solution:
    def isPalindrome(self, s: str) -> bool:
        strs :Deque = collections.deque()
        for char in s:
            if char.isalnum():
                   strs.append(char.lower())
        while len(strs) >1: 
            if strs.popleft()!=strs.pop:
                return False
        return True

re.sub('패턴','바꿀문자열','문자열',바꿀횟수)

답지 풀이3(정규식)

class Solution:
    def isPalindrome(self, s: str) -> bool:
        s = s.lower()
        s = re.sub('[^a-z0-9]','', s)
        return s == s[::-1]

나의 풀이

class Solution:
   def isPalindrome(self, s: str) -> bool:
       strs = []
        for char in s:
            if char.isalnum():
                strs.append(char.lower())
        return strs == strs[::-1]

2번

답지 풀이(정규식)

class Solution:
    def reverseString(self, s: List[str]) -> None:
        s.reverse()

나의 풀이

class Solution:
    def reverseString(self, s: List[str]) -> None:
        return s[::-1]
  • 주의 s[::-1]은 공간 복잡도 O(1)로 제한하였기때문에 O(n)으로 초과했다?

3번

'코딩테스트(python)' 카테고리의 다른 글

7장 9번 ~ 12번  (0) 2021.05.30
6장 4번 ~ 7장 2번  (0) 2021.05.23
파이썬 알고리즘 인터뷰  (0) 2021.05.16