본문 바로가기

Computer Science

(20)
python sort dict key by value dictionary의 get 메소드를 이용하면 개별 key에 대해 value를 가져올 수 있다.sorted(A, key=A.get)출처: https://stackoverflow.com/questions/7340019/sort-values-and-return-list-of-keys-from-dict-pythonsorted(A, key=lambda x: A[x])출처: https://school.programmers.co.kr/learn/courses/30/lessons/42889/solution_groups?language=python3이 방법도 있다. 내가 처음에 구현한 방법은 아래인데 O(NlogN + N)의 시간 복잡도를 갖는다.위 방법이 O(NlogN)으로 더 효율적이므로 앞으로는 위 방법을 사용하..
파이썬 딕셔너리 삽입 순서 보장 알고리즘 문제를 풀던 중 다른 사람의 풀이를 보고 알게 된 사실을 공유한다.(공식적으로) Python 3.7부터 딕셔너리 삽입 순서가 보장된다.버전 3.7에서 변경: 딕셔너리 순서는 삽입 순서임이 보장됩니다. 이 동작은 3.6부터 CPython의 구현 세부 사항입니다.출처: https://docs.python.org/ko/3/library/stdtypes.html#dict 프로그래머스 레벨 1 문제의 아래 풀이는 딕셔너리 삽입 순서가 보장될 때만 작동한다. (14~15줄 참고) 어떻게 순서가 보장되도록 변경됐는지 자세한 구현 내용은 아래 화해 기술 블로그에 잘 정리돼있으니 참고하면 좋을 것 같다. Python3.6 부터는 Dict가 순서를 기억한다. – 화해 블로그 | 기술 블로그Python3.6 화해..
Python 2차원 리스트 회전 # 2차원 리스트 90도 회전 def rotate_matrix_by_90_degree(a): n = len(a) # 행 길이 계산 m = len(a[0]) # 열 길이 계산 result = [[0] * n for _ in range(m)] # 결과 리스트 for i in range(n): for j in range(m): result[j][n-i-1] = a[i][j] return result 출처: , 나동빈
[LeetCode/Easy] 88. Merge Sorted Array 88. Merge Sorted Array 통과하지 못한 이유를 종합적으로 생각해 봤을 때, 답안 예시와 같은 approach를 생각했으나 이진 탐색으로 풀어보려고 해서 더 어려웠던 것으로 보인다. 처음부터 (상대적으로) 난이도가 어려운 알고리즘으로 풀려고 하지 말고, time complexity가 어떻든 반복문으로 이해하기 쉽게 구현해 보자. 그 이후에 time complexity를 줄일 방법을 생각해 보자. 즉, 문제를 풀 때 어려운 방법보다는 쉽고 단순한 방법으로 먼저 접근하고 이후 효율화하자. 효율화할 때 time/space complexity를 줄일 수 있는 조건문의 논리연산자를 고민해 보자. 같은 말을 두 번 체크하고 있을 수도 있다. 내 풀이 vs. 답안 풀이 내 풀이 답안 풀이 in-plac..
[LeetCode/Easy] 121. Best Time to Buy and Sell Stock 121. Best Time to Buy and Sell Stock 내 풀이 vs. 답안 풀이 내 풀이 답안 풀이 prices 길이가 1일 때 return 0 if len(prices) == 1: return 0 else: for i in range(len(prices)): # 이하 생략 max_profit = 0 for i in range(len(prices) - 1): for j in range(len(prices)) # 이하 생략 return max_profit -> i는 마지막 원소를 돌지 않게끔 하면 if문으로 확인할 필요 없음 최대 profit을 구하는 방식 profits = [] profits.append(profit) return max(profits) -> max(), min() 없이 최대..