728x90

𝘼𝙣𝙖𝙡𝙮𝙨𝙞𝙨 89

정렬 알고리즘

선택 정렬 : 처리되지 않은 데이터 중에서 가장 작은 데이터를 선택해 맨 앞에 있는 데이터와 바꾸는 것을 반복 시간 복잡도 : O(N^2) array = [7, 5, 9, 0, 3, 1, 6, 2, 4, 8] for i in range(len(array)) : min_inex = i # 가장 작은 원소의 인덱스 for j in range(i+1, len(array)): if array[min_index] > array[j]: min_index = j array[i], array[min_index] = array[min_index], array[i] #스와프 삽입 정렬 : 처리되지 않은 데이터를 하나씩 골라 적절한 위치에 삽입 시간 복잡도 : O(N^2) (반복문 두번 중첩) array = [7, 5, 9..

DFS & BFS

그래프 탐색 알고리즘 스택 자료구조 - 선입후출 - 입구와 출구가 동일한 형태 - 박스쌓기로 생각하기 - 기본으로 제공되는 리스트로 스택 이용 가능! stack = [] stack.append(5) #삽입 stack.append(2) stack.pop() #삭제 stack.append(1) stack.append(4) stack.pop() print(stack[::-1]) #최상단 원소부터 출력 -> [1, 5] print(stack) #최하단 원소부터 출력 -> [5, 1] 큐 자료구조 - 선입선출 - 입구와 출구가 모두 뚫려 있는 터널과 같은 형태 - 은행 순서같은 거 - from collections import deque 라이브러리 사용! from collections import deque #큐..

그리디 & 구현

[그리디] 예시1) 거스름 돈 가장 큰 화폐 단위부터 돈을 거슬러 주기 : 가지고 있는 동전 중에서 큰 단위가 항상 작은 단위의 배수이므로 작은 단위의 동전들을 종합해 다른 해가 나올 수 없기 때문 : 800원 거슬러 줘야 하는데 화폐 단위가 500, 400, 100이면 X n = 1260 count = 0 #큰 단위의 화폐부터 차례대로 확인하기 array = [500, 100, 50, 10] for coin in array : count += n // coin #해당 화폐로 거슬러 줄 수 있는 동전의 개수 세기 n %= coin print(count) 예시2) 1이 될 때까지 N에 대하여 최대한 많이 나누기 K로 나누어 떨어지지 않으면 1 빼기, 나누어 떨어지면 K로 나누기 * N이 K로 나누어 떨어지..

heapq와 deque의 차이

deque - 선입선출 - 동적 배열인 리스트는 큐연산에적합하지 않아 데크를 써야 좋은 성능을낼 수있음 - 양쪽 끝을 모두 추출할 수 있음 - BFS from collections import deque q=deque() q.append('l') q.popleft() heapq - 우선순위 큐 - 최소힙, 최대힙 - 최단경로 탐색하는 다익스트라, 최소값이나 최대값을 빨리 찾아야 할 때 - heappop()을 할 경우 가장 작은 원소부터 추출됨 from heapq import heappush, heappop, heapify q=[] heappush(q, 1) heappop(q) heapify(arr) Tuple보다는 List가 더 느리기 때문에, 해당 코드의 우선순위 큐에 넣는 원소를 []가 아닌 ()로 ..

[Programmers] 의상 (해시)

https://school.programmers.co.kr/learn/courses/30/lessons/42578 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(clothes): answer = 1 clothe = {k:[] for _,k in clothes} for name, kind in clothes : clothe[kind].append(name) for v in clothe.values() : answer *= (len(v) + 1) return answer - 1 다른 분들이 푸신 해설을 보다가 도움이 되는 설명이 있어서..

[Programmers] 가장 큰 수 (정렬)

https://school.programmers.co.kr/learn/courses/30/lessons/42746 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(numbers): return ''.join(map(str, sorted(numbers, key=lambda x : (str(x)[0], str(x), str(x)[-1]), reverse=True))) 실패할 줄 알았던... ㅎㅎ 결국 다른 사람의 힌트를 참고함! def solution(numbers): numbers = list(map(str, numbers)) numb..

[Programmers] K번째수 (정렬)

https://school.programmers.co.kr/learn/courses/30/lessons/42748 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(array, commands): answer = [] for a, b, c in commands : answer.append(sorted(array[a-1 : b])[c-1]) return answer

A/B TEST 다 뿌셔!

1) A/B 테스트를 하는 이유 1. 표면적 이유 : 목표를 달성하기 위한 방안으로 A안과 B안 중 어느 게 더 효과가 좋은가? 2. 내재된 이유 : N명의 트래픽/고객에 대해서만 유효한 것이 아니라, 향후 모든 유형의 고객에게 A안과 B안 중 어느 것이 확실하게 좋은가? A와 B의 차이 때문에 생긴 결과가 맞은가? 이 결과는 우연이 아닌가? 2) A/B 테스트를 하면서 겪는 잘못된 생각 1. A/B 테스트의 결과 차이가 상당히 크거나 확실하길 바람 2. 실험 배경이 5:5로 동일하다고 생각함 트래픽을 균등하게 나눠야 함 두 그룹에 노출되는 비율에 차이가 없도록 실험이 공정하게 진행되었나? 3. 어쩌다 나온 이례적인 경우거나 우연이 아니라고 생각 3) A/B 테스트 설계 1. 모집단 중 그 일부인 '표본..

의사결정을 위한 A/B 테스트 - 당근마켓 테크 블로그 리뷰(5)

https://medium.com/daangn/1%EC%A3%BC-1%EA%B0%9C-%EC%8B%A4%ED%97%98%ED%95%98%EB%8A%94-%ED%94%84%EB%A1%9C%EB%8D%95%ED%8A%B8-%ED%8C%80%EC%9D%B4-%EB%90%98%EB%8A%94-%EC%97%AC%EC%A0%95-b8a4c337a8e1 1주 1개 실험하는 프로덕트 팀이 되는 여정 안녕하세요 당근마켓 중고거래팀에서 데이터 분석가로 일하고 있는 매튜에요! medium.com 실험을 하니까 더 명확하게 가설을 확인하게 되고 의사결정도 단순 아이디어가 아닌 사실을 기반으로 할 수 있게 1) 당근마켓 중고거래팀이 했던 A/B 테스트 1. 후기를 받은 사용자도 후기를 남기도록 유도하기 2. 가설 : 검색 결과..

728x90