Develop/Algorithm

1. 이분탐색이 복잡도가 적어 공부를 많이 해야 겠다. 2. 문제 3. 문제 해석 key - 결론적으론 주어진 K(올릴 수 있는 총 레벨)로 캐릭들에게 최대한 균등히 분배하여 최소값을 구하는 문제이다. - 이분탐색을 가장 낮은 렙에서 k이 까지로 끝과 끝을 잡고 이분탐색을 하여 pivot과 렙의 차를 합산하여 산출하면 된다. 4. 코드 import sys input = sys.stdin.readline # 1. n, k값을 받는다. n, k = map(int, input().split()) # 2. 캐릭 렙을 받는다. n_list = [int(input()) for _ in range(n)] # 3. 리스트에서 가장 작은 값을 bottom으로 사용 bottom = min(n_list) # 4. botto..
1. 간단 정의 - 선입선출로 돌아가는 데이터 임시 저장 방식이다. - 큐에서 유용하게 사용하게 되는 collections 라이브러리도 함께 소개한다. 2. 문제 3. 문제 해석 - 핵심은 리스트를 k 전까지 돌려주고 k번째는 별도의 리스트로 넣어 리스트를 줄인다. 4. popleft함수 - deque를 import 하면 사용할 수 있고 가장 앞의 요소롤 pop할 수 있다. - 시간복잡도가 pop과 동일하다.(중요) 5. 코드 import sys from collections import deque input = sys.stdin.readline #리스트의 개수(n), 건너 뛰는 범위(k) n, k = map(int, input().split()) n_list = deque([]) for i in ran..
1. 문제 2. 문제 해석 - 어렵다. - 핵심은 열린 괄호가 들어올때 문제에 주어진 대로 곱하기를 해주고, 닫힌 괄호가 맞는 모양이면 pop과 동시에 이전것과 비교해 더하기를 해주어야 한다. 3. enumerate함수 1) 이 코드를 살려준 함수이다. 2) 리스트에 대해서 index값과 element를 함께 가져와 준다. 3) 잘 사용하면 반복문을 줄일 수 있을 것 같다. 4. 코드 import sys input = sys.stdin.readline # stack에 넣는다. stack = [] # 점수를 계산하는 sum 1로 시작 # 뒤에 열린 괄호가 들어오면서 곱샘을 해주기 때문에 sum = 1 # 괄호가 닫힐때 기존 괄호를 pop하면서 sum을 더해 주기 위한 변수 tmp = 0 # 괄호 데이터를 ..
1. 정의 1) 뜻 : 스택(stack)은 데이터를 임시 저장하는 기본 자료구조 2) 입출력 순서 : 후입 선출 - 쉽게말해 데이터를 넣을때(push) 마지막 데이터에 들어가며, 빼면(pop) 마지막 데이터가 나온다. 2. 기본 용어 1) Push - 스택에서 데이터를 넣을때 사용하는 용어 - 마지막에 데이터가 추가되는 것을 볼 수 있다. 2)Pop - 스택에서 데이터를 가져올때 사용하는 용어 - 마지막의 데이터를 가져오게 된다. 3) Stk - push한 데이터를 저장하는 스택본체의 list형 배열 이다. 4) Stk의 bottom, top - 말그대로 Stk의 가장 밑이 bottom, 스택에 들어있는 데이터의 가장 마지막 데이터를 top이라고 한다. - 주의해야 할 것은 데이터가 가장 처음 쌓이는 곳..
0. 여러분의 개발 공부에 도움이 되지 않는다. 1. 이분탐색 정의 - 정렬되어있는 배열 또는 리스트에서 탐색을 하는 방법 - 검색 범위를 절반씩 줄여 탐색하므로 빠르다. 2. 예시 코드 # 이분탐색 함수 def binary_search(sort_list, key): pl = 0 # 리스트의 처음을 pl으로 잡는다. pr = len(sort_list)-1 # 리스트의 마지막을 pr로 잡는다. while True: pc = (pl+pr) // 2 # 중간 수를 pc로 잡는다.(pr//2 로 하지 않은 이유는 아래를 보면 알 수 있다.) if sort_list[pc] == key: # sort_list의 인덱스가 pc인 값과 Key가 같다면 바로찾음 return 1 elif sort_list[pc] < ke..
0. 당신의 개발공부에 도움이 되지 않습니다. 1. 문제 2. 문제 해석 - 이분탐색으로 톱의 길이의 최댓값을 구하는 문제 - 참고로 이분탐색을 나무 리스트에 사용하는 것이 아니라 절단기 높이를 구하는데 사용해야 한다. 3. 코드 N, M = map(int, input().split()) # N: 나무 개수, M: 필요한 나무 양(길이) N_list = list(map(int, input().split())) # N개의 나무리스트 bottom, top = 0, max(N_list) # 절단기 높이와 바닥을 설정한다. while bottom = p: count1 += tree - p if count1 >= M: # 자른 나무가 필요한 나무보다 크면 bottom = p + 1 # 더 조금 자르기 위해 절단기..
Hong-Kyu
'Develop/Algorithm' 카테고리의 글 목록 (4 Page)