파이썬 3

[python] 행렬의 좌/우회전, 전치행렬 간단한 코드

numpy 같은 라이브러리 없이도 행렬의 회전, 전치행렬에 대해서 한 줄로 간단하게 변환시킬 수 있어서 함수로 작성해 여기에 기록해둔다. def rotate(M, dir='left'): if dir == 'left': # left 90 degree rotate out = list(reversed(list(map(list, zip(*M))))) elif dir == 'right': # right 90 degree rotate out = list(map(list, zip(*reversed(M)))) elif dir == 'transpose': # transpose matrix out = list(map(list, zip(*M))) else: print('choose dir "left"/"right"/"tra..

Algorithm/tool 2023.03.17

[python] 계층적 구조의 다중 필터링

코테 문제를 풀다 효율적인 계층적 구조의 다중 필터링 알고리즘이 필요해서 여기에 기록해둔다. 예를 들어 8명이 각각 A, B, C, D 요소를 갖고 있다고 할 때, 첫 번째 필터로 가장 큰 A요소를 가진 사람을 찾고, 만약 여러 명이면 그 여러 명 중에서 가장 큰 B요소를 가진 사람을 찾고, 여기서도 여러 명이면 가장 작은 C요소를 가진 사람을 찾고 여기서도 여러 명이면 가장 작은 D요소를 가진 사람을 찾는 문제를 "계층적 구조의 다중 필터링" 알고리즘이라 칭했다. 각 필터가 독립적이지 않고 조건부로 얽혀있기 때문이다. 좀 많이 고민했는데, 현재 기준 가장 깔끔한 것 같은 알고리즘 구상은 아래와 같다. 상위 필터에서 단독으로 걸리는 가정은 생략했다. dic = {"A": [5, 5, 5, 5, 3, 5,..

Algorithm/tool 2023.02.08