목록전체 글 (10)
HYUN's HOME
오른쪽 정렬 / 왼쪽 정렬val = "77".rjust(5, "0") : 00077 처럼 오른쪽으로 정렬해줌val = "222".ljust(5, "0") : 22200처럼 왼쪽으로 정렬해줌val = "2".zfill(3) : 002처럼 왼쪽에 0을 채워줌bin(10) → '0b1010' : 이진수로 바꿔줌bin의 AND연산(&): AND연산은 각 자릿수를 비교하여 둘다 1이면 1, 아니면 0bin의 OR연산(|): 각 자릿수를 비교하여 둘 중 하나만 1이면 1bin의 XOR연산(^): 각 자릿수를 비교하여 다르면 1, 같으면 0bin의 NOT연산(~): 1은 0으로 0은 1로 변환 → ~ 연산 결과는 -(입력값 + 1)정렬 관련 + sort()x.sort(key=lambda x:len(x)) : 길이별로..
합병 정렬(Merge Sort) - Divide : 리스트를 반으로 나눈다- Conquer : 왼쪽 리스트와 오른쪽 리스트를 각각 정렬한다- Combine : 정렬된 두 리스트를 비교하여 하나의 정렬된 리스트로 합병한다 퀵 정렬(Quick Sort)- Divide : partition을 하는 과정 - Conquer : pivot 왼쪽에 있는 값들과 pivot 오른쪽에 있는 값들을 각각 정렬 - Combine : 정렬된 두 리스트를 하나의 정렬된 리스트로 합병한다 [프로그래머스] K번째 수 - lv.1 [프로그래머스] 가장 큰 수 - lv.2 [프로그래머스] H-index - lv.2
def square(x): return x**2numbers = [1, 2, 3, 4, 5]squared_numbers = map(square, numbers)print(list(squared_numbers)) # [1, 4, 9, 16, 25]map()- map(function, iterable)- 각각의 요소에 특정 함수를 적용한 결과 반환
스택/큐 (Stack/Queue)- 스택과 큐는 데이터 순서관계를 유지할 수 있다.[프로그래머스] 같은 숫자는 싫어 - lv.1from collections import dequedef solution(arr): queue = deque(arr) answer = [] answer.append(queue.popleft()) while queue: temp = queue.popleft() if temp != answer[-1]: answer.append(temp) return answer[프로그래머스] 기능개발 - lv.2- 사칙연산을 이용하면 오류나니까 math.ceil 이용할 것 - (remai..
탐욕법 (Greedy)- 당장 눈앞에 보이는 최적의 선택을 하는 방식- 각 단계에서 탐욕스러운 선택이 최종 답을 구하기 위한 최적의 선택 - 전체에서 최적의 답이 아닐 수도 있음ex) 매 순간마다 가장 큰 동전을 선택 ## 최소 동전으로 거슬러 주기 ##def min_coin_count(value, coin_list): count = 0 while value != 0: coin_list.sort(reverse=True) for i in range(4): count += (value//coin_list[i]) value = (value%coin_list[i]) return countdefault_coin_list = [100,..
동적 계획법 (Dynamic Programming)- 한번 계산한 결과를 재활용하는 것 1. Memorization- 재귀함수 사용- 다시 쓸값을 저장해놓는 공간을 cache(캐시)라고 함- Recursive case: 현 문제가 너무 커서, 같은 형태의 더 작은 부분 문제를 재귀적으로 푸는 경우- Base case: 이미 문제가 충분히 작아서, 더 작은 부분 문제로 나누지 않고도 바로 답을 알 수 있는 경우""" 1부터 n까지의 합 """def consecutive_sum(start, end): # base case if end == start: return start # 부분 문제를 반으로 나눠주기 위해서 문제의 정중앙을 정의한다 (Divide) ..