코딩테스트 준비 - 2
2022. 5. 15. 23:15ㆍ프로그래밍 언어/코딩테스트준비
파이썬
추가문법 ( 정렬 위주 )
람다 표현식
- lambda x : x+2
- 람다 매개변수 : 리턴값 - 람다 사용하기 1. 변수에 할당하기
- plus_func = lambda x : x+2
- plus_func(1) --> 3 - 람다 사용하기 2. 내장함수의 인자로 사용
- 내장함수의 인자로 사용할때 편리 (특히 map함수)
- map함수는 입력되는 변수에 특정 함수들을 적용시켜주는 내장함수
- a = [1, 2, 3]
- list( map ( str, a ) ) --> ["1", "2", "3"]
- list( map ( plus_func, a ) ) --> [3, 4, 5]
- list( map ( lambda x : x+2, a ) ) --> [3, 4, 5]
정렬
- sorted( 리스트, key = 람다문법 )
lst = [[3,3],[4,2],[1,2],[6,4],[2,8],[7,2],[9,1]]
# 1. 첫번쨰원소로 오름차순 정렬
value = sorted(lst, key=lambda x:x[0])
print(value) # [[1, 2], [2, 8], [3, 3], [4, 2], [6, 4], [7, 2], [9, 1]]
# 2. 두번째원소로 오름차순 정렬
value = sorted(lst, key=lambda x:x[1])
print(value) # [[9, 1], [4, 2], [1, 2], [7, 2], [3, 3], [6, 4], [2, 8]]
# 3. 첫번째 원소로 내림차순 정렬
value = sorted(lst, key=lambda x:-x[0]) # -를 붙여줌
print(value) # [[9, 1], [7, 2], [6, 4], [4, 2], [3, 3], [2, 8], [1, 2]]
value = sorted(lst, key=lambda x:x[0], reverse=True)
print(value) # [[9, 1], [7, 2], [6, 4], [4, 2], [3, 3], [2, 8], [1, 2]]
# 4. 첫번째 원소 오름차순, 두번째 원소 내림차순 정렬
# 두가지를 기준으로 할려면, x:(튜플) 형태를 사용하면된다.
# lst = [[3,3],[4,2],[1,2],[1,1],[6,4],[2,8],[7,2],[9,1]]
value = sorted(lst, key=lambda x:(x[0],-x[1]))
print(value) # [[1, 2], [1, 1], [2, 8], [3, 3], [4, 2], [6, 4], [7, 2], [9, 1]]
functools 함수
- key 사용하기 응용 ( functools.cmp_to_key(함수명) )
# 프로그래머스 정렬문제 ( 가장 큰 수 )
import functools
def cmp_func(str1,str2):
x = str1 + str2
y = str2 + str1
# return 1 --> 입력 str1, str2 둘중에 str1이 좌측으로 간다.
if int(x)>int(y):
return 1
# return -1 --> 입력 str1, str2 둘중에 str2가 좌측으로 간다.
elif int(x)<int(y):
return -1
# return 0 --> 얜 뭘까? 아직 모르겠다...
else:
return 0
import functools
def solution(numbers):
num = list(map(str,numbers))
num = sorted(num, key=functools.cmp_to_key(cmp_func), reverse=True)
ans_str = ''.join(num)
answer = ans_str
return answer
- functools 의 reduce 사용하기 --> reduce 는 데이터를 집계할때 사용한다.
from functools import reduce
iter_list = [1,2,3,4,5]
# --> ((((1+2)+3)+4)+5)
result = reduce(lambda x,y:x+y, iter_list) # 15
# 초기값 설정가능
result = reduce(lambda x,y:x+y, iter_list, 3) # 18
'프로그래밍 언어 > 코딩테스트준비' 카테고리의 다른 글
코딩 테스트 유형보기 3 - 브루트 포스 (0) | 2022.06.16 |
---|---|
코딩 테스트 유형보기 2 - DFS / BFS (0) | 2022.06.15 |
코딩 테스트 유형보기 1 - 자료구조 (0) | 2022.06.15 |
코딩테스트 준비 - 3 (0) | 2022.05.20 |
코딩 테스트 준비 (0) | 2022.05.07 |