[ Code Kata ] Python #18, #19 | sort()와 sorted( )

Hailee·2020년 12월 27일
0

[ Code Kata ]

목록 보기
23/28
post-thumbnail

이번주는 프로젝트를 진행하느라 코드카타를 진행할 여유가 전혀 없었다ㅜㅜ
우선 아는대로 정리해보는 코드카타들!

#18 같은 알파벳으로 이루어진 단어끼리 묶기

문제 1.

다음과 같이 input이 주어졌을 때, 같은 알파벳으로 이루어진 단어끼리 묶어주세요.

Input: ["eat", "tea", "tan", "ate", "nat", "bat"],
Output:
[
  ["ate","eat","tea"],
  ["nat","tan"],
  ["bat"]
]

output에서 순서는 상관없습니다.

model solution

def groupAnagrams(strs):
    d = {}
    
    for w in sorted(strs):
        key = tuple(sorted(w))
        d[key] = d.get(key, []) + [w]
        print(d)
    return list(d.values())

#19 숫자 리스트에서 가장 큰 값이 나올 수 있는 경우 찾기

문제 1.

숫자로 이루어진 리스트 nums를 인자로 주면, 그 안에서 어떤 연속적인 요소를 더했을 때 가장 큰 값이 나오나요?
가장 큰 값을 찾아 return해주세요.

Input: [-2,1,-3,4,-1,2,1,-5,4]
Output: 6
설명: [4,-1,2,1] 를 더하면 6이 가장 크기 때문

model solution

def maxSubArray(nums):
  for i in range(1, len(nums)):
    if nums[i-1] > 0:
      nums[i] += nums[i-1]
      
  print(nums)
  return max(nums)

파이썬 리스트는 sort() 라는 메소드를 가지고 이 메소드는 리스트를 정렬된 상태로 변경한다. 또 sorted() 라는 내장 함수는 이터러블 객체로부터 정렬된 리스트를 생성한다.

파이썬에서 간단하게 정렬을 실행하려면 다음과 같이 sorted()를 호출하면 된다. sorted()는 기존의 리스트를 변경하는 것이 아니라 정렬된 새로운 리스트를 반환한다.

sorted([4, 2, 3, 5, 1])
[1, 2, 3, 4, 5]

리스트의 메소드인 sort()를 사용하여도 정렬이 된다. 이 경우에는 리스트 자체를 변경해 버린다. 일반적으로 이것보다는 내장함수인 sorted()가 더 편리하다.

myList = [4, 2, 3, 5, 1]
myList.sort()
myList
[1, 2, 3, 4, 5]

또한 sort()는 리스트만을 위한 메소드이지만 sorted() 함수는 어떤 이터러블 객체도 받을 수 있다. 예를 들어서 다음과 같은 딕셔너리 객체도 받을 수 있다.

sorted({3: 'D', 2: 'B', 5: 'B', 4: 'E', 1: 'A'})
[1, 2, 3, 4, 5]

key 매개변수

객체의 데이터 중에서 특정한 데이터를 기준으로 정렬하기 위해 key 매개변수로 정렬을 하기 전에 각 요소에 대하여 적용되는 함수를 지정할 수 있다. 다음의 경우를 살펴보자.

students = [
        ('홍길동', 3.9, 2016303),
        ('김철수', 3.0, 2016302),
        ('최자영', 4.3, 2016301),
]
sorted(students, key=lambda student: student[2])
[('최자영', 4.3, 2016301), ('김철수', 3.0, 2016302), ('홍길동', 3.9, 2016303)]

lambda는 람다식을 나타낸 것으로 정렬을 하기 전에 호출되는 함수를 나타낸 것으로 student요소를 받아서 student[2]를 반환한다. 즉 정렬의 기준이 학생들의 학번이 되는 것이다.

오름차순 정렬과 내림차순 정렬

list.sort()와 내장함수 sorted()는 모두 reverse 매개변수를 받는다. reverse 변수는 부울형으로 True 이면 내림차순이 된다. 위의 예제에서 내림차순으로 정렬하려면 다음과 같이 한다.

sorted(students, key=lambda student: student[2], reverse=True)
[('홍길동', 3.9, 2016303), ('김철수', 3.0, 2016302), ('최자영', 4.3, 2016301)]
profile
웹 개발 🐷😎👊🏻🔥

0개의 댓글