728x90
반응형

2024/03/26 7

[크래프톤 정글 5기] 알고리즘의 벽에 부딪히다

지난 주 월요일에 입소하여, 목요일에 미니프로젝트를 마침과 동시에, 알고리즘 주차 발제를 받고, 알고리즘을 바로 시작하여 벌써 화요일이 되었다. 알고리즘 공부를 하면서 느낀 점은 "정말 답없다" 였다. 정글에서 제시하는 문제들은 난이도가 높은 문제가 많아서, 한 문제에 하루 종일을 쏟는 일이 허다하다. 풀다가 모르겠어서 정답을 봐도 이해가 잘 안된다. 정답 코드를 보고 분석하며 이게 왜 이렇게 되는지, 원리를 이해하는 것 만으로도 몇 시간, 반나절이 훌쩍 간다. 정말 어렵고.. 힘들고... 아주 끔찍하다. 지금까지 공부해본 것 중, 컴퓨터와 IT분야 뿐만이 아닌 모든 분야를 통틀어서 가장 어렵고 머리아프고 힘들다. 다만 다행인 것은.. 나만 그런 게 아니라는 것이다. 이곳에 온 모두가 끔찍하게 어려워하고..

[크래프톤 정글 5기] week01 알고리즘 주차 여섯번째 날, 해시 테이블, 힙, 우선순위 큐, 이진 트리, 피보나치

해시 테이블(Hash Table)- 먼저 키(key)와 값(value)으로 구성된 데이터가 필요하다.- 여기서 “key”를 해시값으로 만들어, 해당 해시값을 “인덱스”로써 활용하여 테이블에 저장한다. 여기서 해시값은 정수 형태가 된다.- 데이터(value)를 해시하여 인덱스로 쓰는 거 아니냐는 사람들이 있는데, 이럴 경우 value가 같으면 인덱스가 중복될 수 있다. 해시함수는 같은 입력에 대해서 항상 같은 해시값을 만들기 때문이다.- 어떤 값을 찾든 O(1)의 복잡도를 가진다. 고유값으로 접근하면 되기 때문.- 해시 테이블에서 만들어진 원소를 버킷(Bucket)이라고 한다. 해시 테이블의 장/단점- 장점 : 자료의 검색, 읽기, 저장 속도가 빠르다. 즉 데이터 조회가 빠르다.- 장점 : 자료가 중복되는..

[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부터 시작해서 각각 고유주소(배열의 인덱스)를..

728x90
반응형