728x90
반응형

전체 글 264

[Baekjoon 11279 / python / 실버2] 최대 힙

import heapq as hq import sys n = int(input()) hqq = [] for _ in range(n): x = int(sys.stdin.readline()) if x >= 1: hq.heappush(hqq, -x) # hq는 최소힙만 지원하기 때문에, 최대힙 처럼 사용하기 위해 음수로 저장 else: # 음수로 저장하면 -가 붙으니, 가장 큰 값이 가장 위로 가게 된다 if len(hqq) == 0: print(0) else: print(abs(hq.heappop(hqq))) # 값을 꺼낼 땐 절댓값을 이용해 양수로 만든다 우선순위 큐가 사용된 문제다. 최대 힙으로 우선순위 큐를 구현하여 문제를 해결할 수 있다. 스택, 큐 문제처럼 문제 자체는 어렵지 않으나, 힙이라는 자료..

[Baekjoon 11866 / python / 실버5] 요세푸스 문제 0

from collections import deque n, k = map(int, input().split()) result = [] human = deque() for i in range(n): # 1 ~ n을 queue에 담는다 human.append(i + 1) while human: # 사람이 다 죽으면 반복 종료 for _ in range(k - 1): human.append(human.popleft()) # k번째 사람을 죽여야 하니, k - 1번 이동하여 죽일 사람 선택 result.append(str(human.popleft())) # 선택된 사람 죽여서 결과 리스트에 순서대로 담기 print('') 큐를 사용하는 문제이다. 난 스택과 큐의 장점을 합친 파이썬의 deque를 import하여..

Algorithm/Queue 2024.03.26

[크래프톤 정글 5기] week01 알고리즘 주차 다섯번째 날, CPU, 인스트럭션, 퀵 정렬(Quick Sort)

버스(Buses) - 시스템 내를 관통하는 “전기적 배선군” - 컴포넌트들 간에 “워드(word)라는 고정 크기의 바이트 단위”로 바이트 정보들을 전송한다 워드(word) - 고정 크기의 바이트 단위 - 워드의 바이트 수는 시스템마다 보유하는 기본 시스템 변수이다. - 대부분의 컴퓨터는 4바이트 또는 8바이트의 워드 크기를 갖는다 입출력 장치 - 시스템과 외부세계와의 연결을 담당한다 - 입력 : 키보드, 마우스 등 - 출력 : 디스플레이 등 메인 메모리 - 프로세서(CPU)가 프로그램을 실행하는 동안, 데이터와 프로그램을 모두 저장하는 “임시 저장장치” - 물리적 메인 메모리는 "DRAM칩"들로 구성되어 있음 - 논리적 메모리는 연속적인 바이트들의 배열로, 0부터 시작해서 각각 고유주소(배열의 인덱스)를..

[Baekjoon 2805 / python / 실버2] 나무 자르기

import sys n, m = map(int, sys.stdin.readline().split()) # 나무의 수 / 요구 벌목량 tree = list(map(int, sys.stdin.readline().split())) # 나무 리스트 tree.sort(reverse=True) # 내림차순 정렬 (큰 나무부터) result = 0 # 이분 탐색으로 적절한 "높이"를 탐색한다 start = 1 # 최소 높이 end = max(tree) # 최대 높이 while start while문이 끝나면, 반드시 start가 end보다 1 크다 mid = (start + end) // 2 cutTree = 0 for i in tree: # 높이(mid)를 설정하고 일일이 벌목을 해본다 if i > mid: # 나..

[크래프톤 정글 5기] week01 알고리즘 주차 네번째 날, 스택, 큐, DFS, 그래프, 백트래킹, 이분 탐색

스택(Stack) - 후입선출(Last In First Out) 구조 - 마지막에 들어온 데이터가 가장 먼저 나간다 - 파이썬에서는 리스트와 pop(), append() 메소드로 스택을 구현할 수 있다 큐(Queue) - 선입선출(First In First Out) 구조 - 먼저 들어온 데이터가 가장 먼저 나간다. “공정한 자료구조” - from collections import deque 사용해서 deque 자료구조를 활용하는 게 좋다 - deque는 스택, 큐의 장점을 모두 채택한 것인데 리스트에 비해 빠르고 queue 라이브러리를 이용하는 것 보다 간단하다 - append(), popleft()를 이용하여 큐를 구현할 수 있다 DFS(Depth-First Search, 깊이 우선 탐색) - 그래프에..

[Baekjoon 15649 / python / 실버3] N과 M(1)

def dfs(graph, selected, m): # 숫자목록, 현재선택된숫자리스트, 모을 숫자의 개수 if len(selected) == m: # 선택된 숫자가 m개면 출력 print(*selected) # ex) [1, 2, 3] -> 1 2 3 이렇게 출력됨 return # 출력을 했으면 상위 노드로 돌아가 다른 경우의 수 찾음 for i in range(1, len(graph)): # 1부터 n까지 탐색 if not visited[i]: # 방문 안했었다면 값 추가, 이 숫자를 점유한다는 느낌 visited[i] = True # 숫자는 중복되면 안 되니까, 하위 노드에서 이 숫자를 쓰지 않도록 True로 해둔다..

[Baekjoon 2309 / python / 브론즈1] 일곱 난쟁이

hobit = [] # 난쟁이 리스트 for _ in range(9): # 9명 입력받음 hobit.append(int(input())) kee = sum(hobit) # 9명 난쟁이 키의 합을 구해둔다 def hobit7(hobit): for i in range(len(hobit)-1): # 난쟁이 2명을 선택하는 모든 경우의 수 인덱스를 구해서 반복한다 for j in range(len(hobit)): if j > i: if kee - (hobit[i] + hobit[j]) == 100: # 난쟁이 2명을 뺀 키가 100 이라면 정답 a = hobit[i] b = hobit[j] hobit.remove(a) # 난쟁이 삭제 hobit.remove(b) hobit.sort() # 정렬 for i in ..

728x90
반응형