일단 이게 뭔가 싶다.
내가 해결 해야 하는 문제는 총 4가지다
그룹 애너그램
def groupAnagrams(strs):
result = {}
for word in strs:
test = "".join(sorted(word))
if test not in result:
result[test] =list()
result[test].append(word)
else:
result[test].append(word)
return list(sorted(result.values(),key=len))
가장 긴 팰린드롬 찾기
def longestPalindrome(s):
def extend(left, right):#중첩함수
while left >= 0 and right < len(s) and s[left] == s[right]: #left 가 0보다 크거나 같고 right 가 문자열의길이보다 작고 왼쪽 문자열과 오른쪽 문자열의 값이 같을때
left -= 1
right += 1
# 위의 조건이 충족할떄마다 왼쪽과 오른쪽으로 한칸씩 이동하면서 비교한다.
return s[left + 1:right] # while 문의 최종값을 리턴해준다,
if len(s) < 2 or s == s[::-1]:# 문자열의 길이가 2 미만이거나 슬라이싱 [::-1] 뒤집었을떄 완전 같다면 바로 리턴
return s
result = '' # result 문자열 초기값 설정
for i in range(len(s) - 1):
result = max(result, extend(i, i + 1), extend(i, i + 2), key=len)
return result
세 수의 합
def threeSum(self, nums: List[int]) -> List[List[int]]:
result = list()
nums.sort()
if 1 > len(nums):
return result
for i in range(len(nums) - 2):
for j in range(i + 1, len(nums) - 1):
for k in range(j + 1, len(nums)):
if i == j or i == k or j == k:
continue
if nums[i] + nums[j] + nums[k] == 0:
test = list([nums[i], nums[j], nums[k]])
if result not in test:
result.append(test)
result = list(set([tuple(item) for item in result]))
return sorted(result)
배열 파티션
배열파티션은 아직 해결하지 못했다
느낀점
첫번째 회차에서 느낀건 접해보지 못한 문제 들이라서 어떻게 풀어야할지 상상도 안간다.
지금으로썬 풀이를 공부하고 예제들을 많이 찾아보는게 좋은것 같다.