이번주는 프로젝트를 진행하느라 코드카타를 진행할 여유가 전혀 없었다ㅜㅜ
우선 아는대로 정리해보는 코드카타들!
다음과 같이 input이 주어졌을 때, 같은 알파벳으로 이루어진 단어끼리 묶어주세요.
Input: ["eat", "tea", "tan", "ate", "nat", "bat"], Output: [ ["ate","eat","tea"], ["nat","tan"], ["bat"] ]
output에서 순서는 상관없습니다.
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())
숫자로 이루어진 리스트 nums를 인자로 주면, 그 안에서 어떤 연속적인 요소를 더했을 때 가장 큰 값이 나오나요?
가장 큰 값을 찾아 return해주세요.Input: [-2,1,-3,4,-1,2,1,-5,4] Output: 6 설명: [4,-1,2,1] 를 더하면 6이 가장 크기 때문
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 매개변수로 정렬을 하기 전에 각 요소에 대하여 적용되는 함수를 지정할 수 있다. 다음의 경우를 살펴보자.
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)]