조금씩 추가할 예정입니다
지정한 우선순위로 Sort
sorted(list, key = lambda x : (x[3],x[1] ... ))
l=[[2,8], [1,3], [4,5],[2,7]]
# 일반 sort -> 첫 번째 요소를 기준으로 하고 첫 번째 요소가 같으면 두 번째가 기준이 됨
print(sorted(l))
# >>> [[1, 3], [2, 7], [2, 8], [4, 5]]
# 2번째 요소를 기준으로 sort
print(sorted(l, key = lambda x : (x[1], x[0])))
# >>> [[1, 3], [4, 5], [2, 7], [2, 8]]
# 오름차순, 내림차순
# -를 붙이면, 현재 정렬 차순과 반대로 하게 된다
print(sorted(l, key = lambda x : (x[0], -x[1])))
# >>> [[1, 3], [2, 8], [2, 7], [4, 5]]
리스트 요소 하나하나씩 출력
print(*list)
# [1, 7, 9]를 1 7 9 로 출력하고 싶을 때
list=[1, 7, 9]
# [방법 1] end=' '
for i in range(n):
print(list[i],end=' ')
# >>> 1 7 9
# [방법 2] Unpacking
# 함수에 각 인자로 하나하나 전달
# list 앞에 애스터리스크(*) 붙힘
# print(list[0], list[1], list[2]) 와 같은 효과
print(*list)
# >>> 1 7 9
전치행렬
l=[[1,2,3],
[11,22,33]]
transposed_l =list(zip(*l))
# 전치행렬1 = list(zip(*이차원행렬))
for t in transposed_l:
print(*t)
# >>> 1 11
# 2 22
# 3 33
재귀함수 제한 늘이기
import sys
sys.setrecursionlimit(10**6)
DFS시에 특히 반복적으로 함수를 부르는 것을 늘려야 될 경우가 있다
리스트 역순(reverse)
l='abcd'
li=[1,2,3,4,5,6]
print(l[::-1])
print(li[::-2])
#dcba
#[6, 4, 2]
이해가 되지 않으면 리스트 슬라이싱을 공부해야 한다.
itertools
- 순열 : permutation
- 순서를 고려하여 뽑는 경우의 수
- 조합 : combination
- 순서를 생각하지 않고 뽑는 경우의 수
- 중복순열 : product
- 같은 숫자를 중복하여 사용가능 -> n**r
- 중복조합 : combinations_with_replacement
- 같은 숫자를 중복하여 조합. 순서 고려
from itertools import permutations, combinations, product,combinations_with_replacement
n=2
iters=[['+', '-', ' '] for _ in range(n)]
candidates=list(product(*iters)) # = list(product(['+', '-', ' '] ,['+', '-', ' '] ,['+', '-', ' '] ))
print(candidates)
>>>[('+', '+'),
('+', '-'),
('+', ' '),
('-', '+'),
('-', '-'),
('-', ' '),
(' ', '+'),
(' ', '-'),
(' ', ' ')]
*를 사용하면 product로 알아서 파라미터를 넣어주어 같은 코드를 반복해야 할 때 굉장히 유용하다
eval
함수의 파라미터를 실행한다. 함수도 실행한다
print(eval('1+3'))
print(eval('abs(-3)'))
>>>4
3
2차원 리스트 max
l = [
[6, 8, 2, 6, 99],
[3, 2, 3, 4, 6],
[6, 7, 3, 3, 2],
[7, 2, 5, 3, 6],
[8, 9, 5, 2, 7]
]
print(max(l))
>>>[8, 9, 5, 2, 7]
print(max(max(l)))
>>>8
l에서 99를 찾고 싶었는데 8이 나왔다. 파이썬에서 max는 내부 요소들에 대해 최대값을 비교하는 것이 아니라, 각 행의 첫 번째 요소부터 순차적으로 비교하여 최대값을 가진 행을 반환한다고 한다.
max_value = max(max(row) for row in l)
이렇게 하면 max 값을 찾을 수 있다
'개발 > Algorithm' 카테고리의 다른 글
[Algorithm] 백준 BOJ 2630 색종이 만들기 python 파이썬 분할정복 실버2 (0) | 2024.02.12 |
---|---|
플로이드 워셜 : Floyd Warshall (0) | 2023.03.30 |
비트마스킹 : Bit Masking 관련 Python 함수 (0) | 2023.03.03 |
유니온파인드 : Union Find : 서로소 집합 : 상호 배타적 집합 : Disjoint Set (0) | 2023.02.04 |
[Algorithm] 백준 BOJ 2467 용액 python 파이썬 투포인터 골드5 (0) | 2022.11.23 |