Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- semanage
- snmp
- subporcess path
- CentOS7
- 정규식 컴파일
- c++ 정규식
- centos pyhon 설치
- linux시간으로 변경
- python subprocess
- 정규식 문자열 출력
- gcc regex
- 1697
- 백준
- c3 second
- regex_search
- c3 축 없애기
- grafana dashboard
- python os
- influxdb 설치
- 정규식 활용
- c3 step graph
- InfluxDB
- snmp test
- telegraf
- python popen
- c3 초
- selinux port 등록
- gcc 업데이트
- c3 축 가리기
- g++ 업데이트
Archives
- Today
- Total
리셋 되지 말자
Tip 본문
정렬 시 비교 함수 사용
- lambda 사용
- functools의 cmp_to_key 사용
lambda
arr = [1, 3, 5, 2, 4]
# 오름차순으로 정렬
# [1, 2, 3, 4, 5]
arr.sort(key=lambda x: x)
print(arr)
# 내림차순으로 정렬
# [5, 4, 3, 2, 1]
arr.sort(key=lambda x: -x)
print(arr)
arr2 = [
[1, 9],
[2, 3],
[2, 4],
[2, 5],
[3, 1]
]
# 첫 번째 원소로 오름차순, 두 번째 원소로 오름차순
# [[1, 9], [2, 3], [2, 4], [2, 5], [3, 1]]
arr2.sort(key=lambda x: (x[0], x[1]))
print(arr2)
# 첫 번째 원소로 오름차순, 두 번째 원소로 내림차순
# [[1, 9], [2, 5], [2, 4], [2, 3], [3, 1]]
arr2.sort(key=lambda x: (x[0], -x[1]))
print(arr2)
functools cmp_to_key
- return -1 : 첫 번째 인자 기준으로, 두 번째 인자가 더 작다
- return 1 : 첫 번째 인자 기준으로, 두 번째 인자가 더 크다
- return 0 : 첫 번째 인자 기준으로, 두 번째 인자와 같다
from functools import cmp_to_key
# 오름차순
def my_cmp_1(x, y):
if x < y:
return -1
else:
return 1
# 내림차순
def my_cmp_2(x, y):
if x < y:
return 1
else:
return -1
arr = [1, 3, 5, 2, 4]
# 오름차순으로 정렬
# [1, 2, 3, 4, 5]
arr.sort(key=cmp_to_key(my_cmp_1))
print(arr)
# 내림차순으로 정렬
# [5, 4, 3, 2, 1]
arr.sort(key=cmp_to_key(my_cmp_2))
print(arr)
팩토리얼 - 내장함수
from math import factorial
print(factorial(4))
# output : 24
최단거리, 가장짧은 거리
문제에 '최단 거리를 구해라', '가장짧은 거리를 구해라' 가 목적이면, bfs와 dp를 고려하자
- dp는 방문 순서가 정해진 케이스에서만 사용 가능하다. 백준 1697 - 숨박꼭질과 같은 문제에서는 dp 사용 불가
deep copy
- 파이썬에서 배열을 복사할 때는 deep copy를 사용할 수 있다.
import copy
a = [1, 2, 3, 4]
b = a
print(a)
print(b)
# [1, 2, 3, 4]
# [1, 2, 3, 4]
a = [1, 2, 3, 4]
b = copy.deepcopy(a)
b[0] = 5
print(a)
print(b)
# [1, 2, 3, 4]
# [5, 2, 3, 4]
나머지가 0이 되지 않도록 하는 법
- 4를 기준으로 나눌 때, 나머지가 0, 1, 2, 3 이지만 나머지가 1, 2, 3, 4 로 나오게 하려면 바꾸면 된다
- 백준 6064 카잉달력
(n-1) % 4 + 1
bfs 탐색 순서 유의점
- 백준 16928번과 같은 문제에서 유의할 점
- 탐색 순서를 위, 왼쪽, 아래, 오른쪽 순서로 탐색한다고 해도
- 시작 위치에서 위쪽만 먼저 탐색한다는 보장이 없다
- 탐색할 수 있는 좌표를 저장만 해놓고, 정렬하여 찾는 방법등이 추가로 필요함
'알고리즘' 카테고리의 다른 글
class 4 (0) | 2022.05.04 |
---|---|
class 3 (0) | 2022.03.01 |
[백준 18111] 마인크래프트 - 브루트포스 (0) | 2022.01.20 |
[백준 1874] 스택 수열 - 스택 (0) | 2022.01.19 |
[백준 1966] 프린터 큐 - 큐 (0) | 2022.01.18 |
Comments