본문 바로가기

전체 글108

프로그래머스: 요격 시스템(lv2) - 문제: https://school.programmers.co.kr/learn/courses/30/lessons/181188 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설명 끝나는 구간을 오름차순으로 정렬하고, 범위에 대해 가장 뒤쪽에 요격하여 범위의 최대를 확인한다. target 구간을 순회하면서, last가 두 구간 사이라면 무시해도 되므로 다음 구간으로 넘어간다. 왜? 시작 지점 정렬은 필요하지 않는가 어차피! target 구간은 순회하면서 last가 두 구간 사이인지 아닌지만 확인하기 때문이다. 우리의 목표는 last(현재 요격 범위의 마지막.. 2023. 6. 12.
[크래프톤 정글] 67일 - 동료학습의 즐거움!🙃 오늘 한 일 👩‍💻 - 알고리즘(프로그래머스 - 달리기 경주) - 권영진 교수님 OS 강의(2) - Pintos 과제 (validate_address, exit, create ...) 알고리즘 https://school.programmers.co.kr/learn/courses/30/lessons/178871 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 앞으로 매일 프로그래머스에서 꾸준히 한 문제씩 풀 예정이다. 오늘 푼 문제는 lv1이었지만, map 자료 구조를 떠올릴 수 있었다. 첫번째 시도는 이중 for문을 사용하여 교체되어야하는 index를 찾은 .. 2023. 6. 10.
개발 환경 구축 시, 환경 변수 설정하기 pintos 과제를 하다 보면 다음과 같이 pintos 프로젝트의 환경 설정 파일인 activate 파일을 적용해야 한다. // home/ubuntu/pintos source ./activate 그런데 매번 터미널을 열 때마다 하는 것은 너~무 귀찮다.😵 자신이 사용하는 셸의 환경 설정 파일을 수정하여, 초기 설정을 해두자. 1. 설정 파일 열기 터미널에서 vim 에디터를 이용하여 설정 파일을 연다. vim ~/.bashrc// bash shell을 사용하는 경우 vim ~/.zshrc// zsh shell을 사용하는 경우 2. 실행 코드를 추가하기 설정 파일에 activate shell이 있는 경로와 함께 해당 스크립트를 실행하는 코드를 추가한다. (파일 경로는 pwd 명령어를 통해 확인할 수 있다) .. 2023. 6. 9.
[크래프톤 정글] 62일 - 즐거운 일요일☀️ 오늘 한 일 👩‍💻 - 알고리즘 문제 풀이(P3613 - Java vs C++) - Passing the argument and creating a thread 🧮 알고리즘 https://www.acmicpc.net/problem/3613 3613번: Java vs C++ Java 예찬론자 김동규와 C++ 옹호가 김동혁은 서로 어떤 프로그래밍 언어가 최고인지 몇 시간동안 토론을 하곤 했다. 동규는 Java가 명확하고 에러가 적은 프로그램을 만든다고 주장했고, 동혁이는 www.acmicpc.net 요즘 문자열 문제를 풀고 있다. 이 문제는 예외처리를 신경쓸게 많았다. ✍️ Passing the argument and creating a thread 핀토스 과제 2주차는 user program이다. 지금 하.. 2023. 6. 5.
[Project2] User Program(2) - Passing the argument and creating a thread: process_exec 함수의 뿌리를 찾아서... process_exec (void *f_name)는 현재 실행 컨텍스트를 f_name으로 바꾸는 함수이다. 이 과제에서 우리는 process_exec에서 호출하는 file을 로드하는 load() 함수에서 f_name을 통해 들어온 명령어를 잘 파싱하여 파일 명과 인자를 구분하는 작업을 해야한다. Argument Parsing을 구현하기 위해 process_exec가 어디에서 나왔는지 거슬러 쭉 올라가면 main함수이다. 한번 위부터 내려와보겠다. 🔎 코드 흐름 int main(void) (threads/init.c) /* Pintos main program. */ int main (void) { uint64_t mem_end; char **argv; /* Clear BSS and get machine's.. 2023. 6. 5.
[Project2] User Program(1) -Background Part2: User Programs 목표: 사용자 프로그램과 커널 프로그램을 시스템 콜을 통해서 소통하여 돌아가도록 한다. 주의할 점 userprog에서 작업을 시작해라. project1을 모두 끝내고 시작해라. #ifdef VM 안에 코드가 추가되면 안된다. → Project3의Virtual Memory Subsystem을 활성화하고 시작된다. Topic Parameter Passing System Call infrastructure File manipulation Background Project1에서 진행한 과정은 실행한 코드가 운영 체제 커널의 일부이다. 지난 과제에서 테스트 코드는 커널의 일부로 동작한 것으로, system의 권한 부분까지 접근할 수 있다. 만약 User Program을 OS에.. 2023. 6. 4.
[크래프톤 정글] 59일 - Pintos 1주차 끝! 오늘 한 일 👩‍💻 - Pintos Project1 주간 발표 - 알고리즘 문제 풀이(P9996 - 한국이 그리울 땐 서버에 접속하지) - 협력사 채용 설명회(당근마켓) 주간 발표 pintos 주차부터는 매주 코드 리뷰 방식이 아닌 주간발표로 진행된다. 전날에 모든 팀이 마지막까지 발표 자료를 만드느라 반 분위기가 무척 뜨거웠다🔥 우리 팀은 과제 설명과 경험했던 트러블슈팅 위주로 발표를 진행했다. 좋았던 점보다 아쉬웠던 점이 먼저 떠오르는데... 발표 시간을 고려해 발표 준비할 것 전날 컨디션을 조절해서 맑은 정신 상태로 발표할 것 발표 준비 시간을 줄이기 위해 미리 발생한 내용을 정리할 것 과제를 할 때, 고민하는 시간을 늘릴 것 이 정도인 것 같다. 다음 주차에는 이를 잘 반영해서 진행하고 싶다. 더.. 2023. 6. 2.
[크래프톤 정글] 50일 - 즐겁다! 오늘 한 일💪 - 알고리즘 문제 풀이(P15903 - 카드 합체 놀이) - tiny 서버 구현 알고리즘 P15903 - 카드 합체 놀이 15903번: 카드 합체 놀이 첫 번째 줄에 카드의 개수를 나타내는 수 n(2 ≤ n ≤ 1,000)과 카드 합체를 몇 번 하는지를 나타내는 수 m(0 ≤ m ≤ 15×n)이 주어진다. 두 번째 줄에 맨 처음 카드의 상태를 나타내는 n개의 자연수 a1, www.acmicpc.net 입력 범위를 확인하자! 파이썬은 범위에 따라 자동으로 형변화를 해주지만 자바는 그렇지 않다. Tiny 서버 구현 https://github.com/Blue-club/webproxy-lab/issues/13 [Feat] Tiny - WebProxy(mywnajsldkf) · Issue #13 ·.. 2023. 5. 24.
[Malloc Lab] 동적 메모리 할당(Dynamic Memory Allocation) - 이론 시작하기 가상 메모리는 mmap와 munmap 함수를 이용해 생성 및 삭제할 수 있다. mmap: 메모리의 내용을 파일이나 디바이스에 맵핑(mapping)하기 위해 사용한다. munmap: 맵핑된 메모리를 해제한다. 하지만 이러한 방식은 프로그램을 실행하기 전에 크기를 할당해야 한다. 만약 가상 메모리를 런타임에 획득하는 것이 필요하다면, 동적 메모리 할당기를 사용한다. 동적 메모리 할당기는 힙(heap)이라고 하는 프로세스의 가상 메모리 영역을 관리한다. 힙은 미초기화된 데이터 영역 직후부터 시작해서 위쪽으로(= 높은 주소 방향으로) 커진다. 이때 힙의 꼭대기를 가리키는 변수를 brk(break)라고 한다. 할당기는 힙을 다양한 크기의 블록들의 집합으로 관리하고, 각 블록은 할당되었거나 사용 가능한 가.. 2023. 5. 17.