본문 바로가기

정글33

[Malloc Lab] 동적 메모리 할당(Dynamic Memory Allocation) - 이론 시작하기 가상 메모리는 mmap와 munmap 함수를 이용해 생성 및 삭제할 수 있다. mmap: 메모리의 내용을 파일이나 디바이스에 맵핑(mapping)하기 위해 사용한다. munmap: 맵핑된 메모리를 해제한다. 하지만 이러한 방식은 프로그램을 실행하기 전에 크기를 할당해야 한다. 만약 가상 메모리를 런타임에 획득하는 것이 필요하다면, 동적 메모리 할당기를 사용한다. 동적 메모리 할당기는 힙(heap)이라고 하는 프로세스의 가상 메모리 영역을 관리한다. 힙은 미초기화된 데이터 영역 직후부터 시작해서 위쪽으로(= 높은 주소 방향으로) 커진다. 이때 힙의 꼭대기를 가리키는 변수를 brk(break)라고 한다. 할당기는 힙을 다양한 크기의 블록들의 집합으로 관리하고, 각 블록은 할당되었거나 사용 가능한 가.. 2023. 5. 17.
AArch64, ARM64 시스템에서 32비트 애플리케이션 컴파일하기 지난번에는 MacOS에서 Docker를 이용해 Ubuntu 개발 환경을 설치하였다. Malloc 과제를 하기위해서는 32비트로 컴파일하는 것이 필요하다. 현재 사용하고 있는 환경은 AArch64 혹은 ARM64 비트 아키텍처로 64비트 환경이다. 잠깐만👋 AArch64는 아키텍처 개발사인 ARM Holdings의 공식 표현으로, ARM과 개발자들은 AArch64라고 부른다. 다만 Apple, Microsoft와 같은 기업 집단은 ARM64라고 표기한다. 원활한 환경 구축을 위해 자신의 개발 환경과 CPU 아키텍처에 대한 기본 개념을 아는 것이 도움되었다. 읽어보면 좋을 글을 함께 공유한다. https://velog.io/@480/이제는-개발자도-CPU-아키텍처를-구분해야-합니다 이제는 개발자도 CPU 아.. 2023. 5. 17.
MacOS에서 Ubuntu 개발 환경 설치하기(Docker) 💡 실습 환경 - MacBook Air Apple M1 - vscode 이번주차부터 C언어 학습을 시작한다. 프로젝트 시작에 앞서 Linux 환경 설정이 필요해 개발 환경을 설치한다. 가상 환경을 설치할 수 있는 방법으로 EC2를 할당받아 사용하는 방법도 있지만, 주변에서 Docker 이야기가 들리길래 전부터 궁금했던 기술이라 사용하기로 결정했다. 이 글은 크게 도커에 대한 소개와 개발 환경 구축 과정에 대해 다룬다. 도커란? 도커는 컨테이너 기반의 가상화 플랫폼이다. 그림의 고래 위에 여러 컨테이너 박스가 존재하는 것처럼 하나의 서버에 여러 컨테이너를 갖을 수 있다. 예를들어, Python, django, node.js, java 등 여러 컨테이너를 올려 독립적으로 관리한다. 소프트웨어 개발에서 컨테이.. 2023. 5. 12.
[크래프톤 정글] 33일 - RBTree 오늘 한 일💪 - 알고리즘 문제 풀이(P11659 - 구간 합 구하기 5) - RBTree 개념 정리 P11660 - 구간 합 구하기 5 https://www.acmicpc.net/problem/11660 11660번: 구간 합 구하기 5 첫째 줄에 표의 크기 N과 합을 구해야 하는 횟수 M이 주어진다. (1 ≤ N ≤ 1024, 1 ≤ M ≤ 100,000) 둘째 줄부터 N개의 줄에는 표에 채워져 있는 수가 1행부터 차례대로 주어진다. 다음 M개의 줄에는 네 www.acmicpc.net 이 앞에 일차원 구간 합 구하기 문제를 풀어서 DP를 사용해야함은 인지했다. 2차원에서 어떻게 할까 고민하다가 누적합을 그리기 시작했다. 구한 누적합으로 구간합은 다음의 방식으로 계산했다. 이번에는 오랜만에 자바로 풀어.. 2023. 5. 6.
[크래프톤 정글] 25일 오늘 한 일💪 - 알고리즘 시험 문제 오답 - 컴퓨터 시스템 교재 읽기(~1.6 저장장치들은 계층구조를 이룬다) WEEK03 테스트 오늘은 3주차 알고리즘 시험을 본 날이다. 이번주는 저번주보다 문제 난이도가 쉬웠고, 3문제 모두 비슷하게 느껴져서 푸는데 평이했다. (+ 이틀동안 우리 반의 교수님들 덕분에 시험 본 것도 도움되었다!) 1388. 바닥 장식 1388번: 바닥 장식 형택이는 건축가이다. 지금 막 형택이는 형택이의 남자 친구 기훈이의 집을 막 완성시켰다. 형택이는 기훈이 방의 바닥 장식을 디자인했고, 이제 몇 개의 나무 판자가 필요한지 궁금해졌다. 나 www.acmicpc.net 일반적인 탐색 형식 문제이다. -와 |을 탐색하기 위한 함수를 각각 만들어서 했다가 시험 끝나고 하나의 함수로 작성.. 2023. 5. 4.
[크래프톤 정글] 22일 - 이분 그래프 오늘 한 일💪 - 알고리즘 문제 풀이 1707번: 이분 그래프 1707번: 이분 그래프 입력은 여러 개의 테스트 케이스로 구성되어 있는데, 첫째 줄에 테스트 케이스의 개수 K가 주어진다. 각 테스트 케이스의 첫째 줄에는 그래프의 정점의 개수 V와 간선의 개수 E가 빈 칸을 사이에 www.acmicpc.net 정말 사소한 이유로 디버깅에 엄청 오래 걸린 문제다... (함께 코드 봐주신 분들 정말 감사합니다.🙇‍♀️) 문제가 있는 코드 from sys import stdin as s from collections import deque s = open("input.txt", "rt") K = int(s.readline()) now_color = 1 # 1: RED, 0: None, -1: FALSE is_s.. 2023. 5. 4.
[크래프톤 정글] 21일 - 그래프 오늘 한 일✍️ - 정보처리기사 실기 시험 - 알고리즘 이론 공부(그래프) 그래프 이번 주차는 문제 풀이를 잘하는 것도 중요하지만, 그래프와 트리를 잘 이해하고 이를 응용해서 문제를 풀이하는 능력이 필요할 것 같다. 특히 이것을 무엇으로 구현하느냐에 따라 성능이 달라지기 때문에 적절한 자료형을 사용하는 것이 중요할 것이라 생각한다. 그래서 당장 문제를 푸는데에 집중하기보다 이론 공부를 함께 하면서 하고 있다. 그래서 내용들을 노션에 정리하면서 하고 있는데 내용이 좀 방대해서 여기서는 대략적인 내용만 작성하고 자세한 내용은 별도의 게시글을 작성하겠다. 그래프 구성 정점(Vertex): 대상이나 개체 간선(Edge): 이들 간의 관계 그래프 구분 유향 그래프(Directed Graph): 그래프의 방향을 가.. 2023. 5. 4.
[크래프톤 정글] 20일 - 탐색 오늘 한 일👊 - 정보처리기사 실기 시험 공부 - graph, tree 공부 범위 정리 - 알고리즘 문제 풀이: 11724 Python 2차원 배열 출력 2차원 배열을 깔끔하게 확인하고 싶다면, * 연산자와 sep 옵션을 이용한다. connection = [[0 for i in range(N)] for j in range(N)] print(*connection, sep='\n') ''' [0, 1, 0, 0, 1, 0] [1, 0, 0, 0, 1, 0] [0, 0, 0, 1, 0, 0] [0, 0, 1, 0, 0, 1] [1, 1, 0, 0, 0, 0] [0, 0, 0, 1, 0, 0] ''' Graph, Tree 이번 주차는 그래프를 공부하다보니, 내용이 무척 방대함이 와닿았다. 그래서 내가 어떤 부분.. 2023. 5. 4.
[크래프톤 정글] 19일 - 트리, PPAP 오늘 한 일👊 - tree 공부 - 알고리즘 문제 풀이 - 알고리즘 문제 오답(2주차 시험) __future__ 문이란? python3에서 쓰이는 문법을 python2에서 쓸 수 있게 해주는 문법이다. 새로운 버전으로 업데이트되지 않았거나, Tensorflow 사용 등 구버전의 언어를 쓰면서 최신 버전 기능을 사용할 때, __future__를 통해 상위 버전 기능을 쓸 수 있다. # python version2 print "hello world" # python version3 print("hello world") Reference https://teknology.tistory.com/5 list의 가장 마지막 위치에 있는 원소를 확인하는 방법 histogram = [1, 2, 3, 4, 5] print.. 2023. 5. 4.