본문 바로가기

반응형

Develop

(64)
[큐]queue 정리_1(백준_11866_요세푸스 문제 0) 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..
[문제풀이]백준_2504_괄호의 값(스택_2, enumerate함수) 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 # 괄호 데이터를 ..
[Python]map 함수에 대해서 정리 1. 기본 형태 # 기본 형태 map(function, iterable) 2. 함수를 사용한 예제(함수사용) - test 함수와 map 함수를 이용해 리스트의 모든 요소를 1씩 더한다. - 그밖에 모든 요소 제곱, 소수점 올림 등을 사용할 수 있다. str_list = ['1', '2', '3', '4', '5', '6', '7'] int_list = [1,2,3,4,5,6,7] def test(n): return n+1 result1 = list(map(test, int_list)) print(result1) # 결과 : [2, 3, 4, 5, 6, 7, 8] 3. 람다(lambda)를 사용한 예제 - 이름없는 함수(lambda)를 사용하여 단순한 함수는 더 간편히 사용 할 수 있다. str_list ..
[스택]Stack 정리_1(with. 백준,9012, 괄호) 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..
[문제풀이]백준 2805 나무자르기 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 # 더 조금 자르기 위해 절단기..
[문제풀이]백준 1920 수찾기 0. 해당글은 개발공부에 도움이 되지 않습니다. 1. 문제 스크린샷 2. 문제 해석 - M개로 되어있는 리스트에서 N로 되어 있는 리스트 요소들이 포함되어 있는지 찾기 - 기본적인 이분탐색문제 3. 코드 1)첫 도전 - 하기 코드는 선형탐색으로 찾은것 - 이렇게 하면 시간초과가 뜬다. N = int(input())# N배열의 개수 N_list = list(map(int, input().split()))# N배열 M = int(input()) # M배열의 개수 M_list = list(map(int, input().split()))# M배열 # N_list와 M_list의 element를 비교하는 함수 def asdf(list, element): for check in list: # N_list의 elem..
[정렬알고리즘]퀵정렬 및 변수 할당 개념(python) 0. 당신의 개발공부에는 전혀 도움이 되지 않습니다. 1. 퀵정렬 개요 1) 이름처럼 웬만하면가장 빠른 정렬 방법이다. 2) 분할정복 알고리즘이다. 3) pivot을 정하여 양쪽을 비교하며 재귀적으로 정렬하는 방식이다. 4) 상세한 원리는 다름 블로그에 자세히 설명이 되어 있어 참고하였다. 2. 코드 # 퀵 정렬 재귀함수 def quick_sort(arr, left, right): pl = left # 첫번째 index 를 pl로 할당 pr = right # 마지막 index를 pr로 할당 p = arr[(left+right) // 2] # 위 두개로 pivot을 계산해 리스트의 가운데 element를 p에 할당 while pl p : pr -= 1 # 리스트 제일 오른쪽 요소가 p보다 큰 것을 찾을때까..

반응형