분류 전체보기
-
[Python] 프로그래머스 / 2022 KAKAO BLIND RECRUITMENT / 파괴되지 않은 건물코딩테스트 2024. 9. 23. 16:57
문제 링크누적합 기법뭐 아래와 같이 행렬 일부에 같은 값을 더하거나 빼서 업데이트해야 할 일이 있다고 해보자. 직관적이긴 하지만 이러면 좀 비효율적이다. 이럴 때는이러는 편이 조금 더 낫다. 왼쪽부터 누적합을 하면 같은 결과가 나오게 되기 때문이다.이를 누적합 기법이라고 한다. 누적합 기법을 사용하지 않은 코드는 굉장히 간단하다. 그냥 빡구현도 아니고 그냥 단순 구현 문제일 뿐이다.def solution(board, skill): for heal_or_deal, r1, c1, r2, c2, degree in skill : #1 to -1; 2 to 1 heal_or_deal = 2 * heal_or_deal - 3 for r in range(r1, r2..
-
[Python] 오류해결노트: heapq 자료구조 시 NoneType은 있으면 안 된다.코딩테스트 2024. 9. 22. 22:07
TypeError: ' not supported between instances of 'int' and 'NoneType' 1. heapq는 O(log N)의 시간복잡도로 리스트 내 최솟값을 구할 수 있게 해주는 고마운 친구이다.혹시 이 원리를 모르겠다면, 그리고 sort()랑 뭐가 다른지 모르겠다면,min heap 자료구조를 공부하면 된다. 코드 외우지만 말고 반드시 공부하자.import heapqa = [3, 2, 1, 5, 9, 4, 7]heapq.heapify(a)heapq.heappop(a) #1단, 처음부터 heappush()로 구축한 게 아닌 이상 heapify()로 반드시 초기화 진행해야 함. 2. 심지어 원소가 int가 아니라 tuple, list여도 된다.그래서 BFS에서 매우매우매우 ..
-
[Python] 프로그래머스 / Summer/Winter Coding(2019) / 지형 이동코딩테스트 2024. 9. 22. 17:34
문제 링크 생각보다 섬세함이 필요한 BFSBFS 그거 그냥 queue 만들어서 while queue 하면 끝 아님? 싶을 수 있겠지만... BFS에 익숙해진 나머지, 근의 공식 사용하듯이 그렇게 아무 생각 없이 풀면 안 된다는 것을 깨달았다. 일단 이 문제는, MST(최소 스패닝 트리) 방식으로도 충분히 잘 풀 수 있다. 그것도 물론 좋은 방법이지만, 나는 BFS 풀이로 풀었다. 오답 풀이import heapqdef solution(land, height): N = len(land) queue = [(0, 0, 0)] seen = [[False] * N for _ in range(N)] dx = [1, -1, 0, 0] dy = [0, 0, 1, -1] ..
-
꿀팁 : defaultdict(list)의 value를 deque()로 만들면 잘 작동되지 않는다.코딩테스트 2024. 9. 20. 14:46
1. deque()에서는 rotate()가 가능하다.from collections import deque A = deque([1,2,3,4,5])A.rotate(-1)A #deque([5, 1, 2, 3, 4]) 2. deque()를 deepcopy()해도 rotate()가 가능하다.from collections import deque from copy import deepcopyA = deque([1,2,3,4,5])A.rotate(1)B = deepcopy(A)B #deque([5, 1, 2, 3, 4]) 3. dict()의 value가 deque()여도 rotate()가 가능하다.A = {0 : deque([1,2,3,4,5]), 1 : deque([1,2,3,4,5]), 2 : de..
-
[Python] 프로그래머스 / Summer/Winter Coding / 쿠키 구입코딩테스트 2024. 9. 19. 22:29
문제 링크 Simple is the best 쫄지 말자. 구간합 문제는 누적리스트로 풀릴 때가 많다.def solution(cookie): n = len(cookie) S = [0] * (n+1) for i in range(1, n+1) : S[i] = S[i - 1] + cookie[i - 1] #S[i]는 A[i-1]까지의 합 max_sum = 0 for m in range(n-1) : l = 0 r = n-1 while l right : l += 1 else : ..
-
[Python] 프로그래머스 / 2018 KAKAO BLIND RECRUITMENT / [1차] 추석 트래픽코딩테스트 2024. 9. 19. 20:49
문제 링크 정답 코드하라는 대로 하기만 하면 되는 간단한 문제.def solution(lines): times = [] for line in lines: date, time, duration = line.split() hh = int(time[:2]) mm = int(time[3:5]) ss = int(time[6:8]) ms = int(time[9:]) duration = int(float(duration[:-1]) * 1000) end_time = (hh * 3600 + mm * 60 + ss) * 1000 + ms start_time = end_time ..
-
[Python] 프로그래머스 / 2021 Dev-Matching: 웹 백엔드 개발자(상반기) / 다단계 칫솔 판매카테고리 없음 2024. 9. 19. 19:48
문제 링크그.. 다단계가 트리구조의 좋은 예시이긴 하지만 그래도.. 정답코드그냥 시키는 대로 하면 바로 풀리는 문제from collections import defaultdictdef solution(enroll, referral, seller, amount): N = len(enroll) M = len(seller) tree = dict() for i in range(N) : tree[enroll[i]] = referral[i] if referral[i] != "-" else None result_dict = defaultdict(int) for i in range(M) : name = seller[i] ..