파이썬으로 배우는 알고리즘 책을 공부하며 풀었던 LeetCode문제들을 재정리해보자. # 문제 설명 5번 Longest Palindrome Substring은 가장 긴 팰린드롬 부분 문자열을 출력하는 문제이다. * 펠린드롬 : 앞뒤가 똑같은 단어나 문장 # 풀이방법 1 - 단순 이중 for문으로 class Solution: def longestPalindrome(self, s: str) -> str: palindroms = "" # 문자열의 첫글자와 끝 글자가 같은 문자열 구함 for startIdx, c in enumerate(s): sameCharIdxGroup = [i for i, ele in enumerate(s) if ele == c and i> startIdx] for endIdx in sam..
문자열 조작
파이썬으로 배우는 알고리즘 책을 공부하며 풀었던 LeetCode문제들을 재정리해보자. # 문제 설명 49번 Group Anagrams은 문자열 배열을 받아 애너그램 단위로 그룹핑하는 문제이다. * 애너그램 : 문자를 재배열하여 다른 뜻을 가진 단어로 바꾸는 것 # 풀이방법 1 - 정렬 후 딕셔너리에 저장 class Solution: def groupAnagrams(self, strs: List[str]) -> List[List[str]]: output = [] anagrams = {} # dictionay for check anagram's Index in 'output' list insertIdx = 0 for _str in strs : sortedStr = "".join(sorted(_str)) if..
파이썬으로 배우는 알고리즘 책을 공부하며 풀었던 LeetCode문제들을 재정리해보자. # 문제 설명 937번 Reorder Log Files은 다음 규칙에 따라 로그를 재정렬하는 문제이다. 1. 로그의 가장 앞 부분은 식별자 2. 문자로그는 숫자 로그보다 앞에 온다 3. 문자로그를 정렬할 때 문자가 동일할 경우 식별자 순으로 함 4. 숫자 로그은 입력 순서대로 함 # 풀이방법 1 - lamda와 + 연산자 이용 (책 풀이 참고) class Solution: def reorderLogFiles(self, logs: List[str]) -> List[str]: letterLogs = [] digitLogs = [] for log in logs : if log.split()[1].isalpha() == Tru..
파이썬으로 배우는 알고리즘 책을 공부하며 풀었던 LeetCode문제들을 재정리해보자. # 문제 설명 344번 Reverse String은 주어진 문자열 배열을 뒤집는 함수를 작성하는 문제이다. # 풀이방법 1 - 단순 for문으로 값 이동 (투 포인터를 이용한 스왑) class Solution: def reverseString(self, s: List[str]) -> None: for i in range(0, len(s)//2) : tmp = s[i] s[i] = s[len(s)-1-i] s[len(s)-1-i] = tmp 1. for문으로 리스트의 길이의 1/2를 돌며, tmp 변수를 이용하여 앞쪽의 문자와 뒤쪽의 문자를 하나씩 바꿔준다. # 풀이 방법 2 - 파이썬의 reverse기능 class So..
파이썬으로 배우는 알고리즘 책을 공부하며 풀었던 LeetCode문제들을 재정리해보자. # 문제 설명 125번 Valid Palindrome은 주어진 문자열이 팰린드롬인지 확인하는 문제이다. 단 알파벳인것만 취급하며, 대소문자 구분 없이 모두 소문자로 바꿔서 평가함. * 펠린드롬 : 앞뒤가 똑같은 단어나 문장 # 풀이방법 1 - 단순 list와 for문으로 판별 class Solution: def isPalindrome(self, s: str) -> bool: check = [] for c in s : if c.isalpha() or c.isdigit(): check.append(c.lower()) check_len = len(check) if check_len == 0 : return True for i..