전체 글 93

2학년 1학기 종강 기념

오랜만의 티스토리다! 요새 다른 쪽에 집중할 일이 생겨서 알고리즘과 티스토리쪽에는 신경을 못 써주고 있다.. 그래도 성적도 발표된 만큼 잠시 한 학기의 활동을 짧게 기록하려고 한다. 우선 지난 일상 글에서 원했던 대로 올A+ 받아서 기분이 좋았다! 이번 학기에는 바라는 대로 수강신청도 되고 성적도 잘 나와줘서 한 학기 잘 보냈구나라는 생각이 든다. 다음 학기 목표는 학점 잘 챙기고,, 그저 하루하루를 허투로 쓰지 않는 것이다. 이번 방학도 스스로에게 정해놓은 매일의 과제는 꼭 지키며 살아가는 사람이 되고 싶다.

일상 2023.07.17

[백준 13904] 과제 - 골드1(그리디, 정렬)

https://www.acmicpc.net/problem/13904 13904번: 과제 예제에서 다섯 번째, 네 번째, 두 번째, 첫 번째, 일곱 번째 과제 순으로 수행하고, 세 번째, 여섯 번째 과제를 포기하면 185점을 얻을 수 있다. www.acmicpc.net 사용한 자료구조: 리스트 사용한 알고리즘: 정렬, 그리디 문제를 풀다가 이번 코드는 이제껏 한 번도 사용해본 적 없는 방법으로 푼 문제라 기록해두고 싶어서 오랜만에 알고리즘 포스팅을 한다. 원래 이 문제는 우선순위 큐를 사용해서 푸는 문제지만, 나는 리스트의 정렬만으로 문제를 풀이했다. 먼저, 이 문제에서의 데이터의 우선순위는 (1) 과제의 점수가 높을 수록, (2) 마감 기한이 짧을수록 높기 때문에 입력을 받으며 lambda 식으로 정렬해..

2학년 중간고사를 마친 후

이번 학기에 수강한 과목들은 운영체제, 자료구조, 세상을 읽는 논리적 사고, 현대 사회와 리더십, 미분적분학, 실용영어 등등이다. 저번 티스토리 글을 보니 2학년에 들을 전공 과목들에 대해 꽤 기대하고 있었고, 영어하고 수학을 수강하고 싶다는 글이 있었는데 바라는 대로 되었다! 기대했던 자료구조는 역시나 재밌어서 좋았다. 교양 중에서는 바라던 영어 2과목 수학 1과목의 수강을 성공했는데 모두 마음에 든다ㅜㅜ 학교 수학 교수님께서 강의도 잘하시고 좋으셔서 계속 따라다니는 중이다. 시험들은 모두 무난하게 본 것 같다. 이번 시험에서는 처음으로 A4용지에 시험 범위들을 적으면 1페이지~3페이지 내로 정리한 후 외우는 방법과 목차를 암기해서 머릿속에서 구조화하여 기억하는 방법을 이용했다. 이 방법은 무의식적으로..

일상 2023.04.28

그림으로 배우는 구조와 원리 운영체제(구현회) 3장 연습문제 풀이

1. 프로세스(process)를 바르게 설명한 것끼리 나열한 것은? ㉠ 실행 가능한 PCB가 있는 프로그램 ㉡ 프로세서가 할당하는 개체로 디스패치가 가능한 단위 ㉢ 목적 또는 결과에 따라 발생하는 사건들의 과정 ㉣ 동기적 행위를 일으키는 주체 ① ㉠,㉡,㉢ ② ㉠,㉡,㉣ ③ ㉠,㉢,㉣ ④ ㉡,㉢,㉣ 더보기 정답: ①, 프로세스는 비동기적 행위를 한다. 2.프로세스 제어 블록을 가지고, 현재 실행 중이거나 곧 실행 가능하고, 프로세서(CPU)를 할당받을 수 있는 프로그램으로 정의할 수 있는 것은? ① 작업 집합 ② 세그먼테이션 ③ 모니터 ④ 프로세스 더보기 정답: ④, 프로세스(작업)에 관한 설명이다. 3. 프로세스의 정의로 적당하지 않은 것은? ① 하드웨어로 사용하는 입출력장치 ② 실행 중인 프로그램 ③..

컴구&운영체제 2023.04.12

프로세스와 스레드(프로세스의 개념, 상태 변화, 관리와 스레드의 개념, 상태 변화, 구현)

1. 프로세스의 개념과 상태 변화 프로세스는 디스크에 있는 프로그램을 메모리에 적재하여 운영체제의 제어를 받는 상태가 된, 즉 실행 중인 프로그램이다. 프로세스가 되기 위해서는 프로세서 점유 시간, 메모리, 파일, 입출력장치와 같은 자원이 필요하다. 프로세스의 분류 수행 역할에 따른 분류: 시스템 프로세스, 사용자 프로세스 병행 수행 방법에 따른 분류: 독립 프로세스, 협력 프로세스 프로세스 상태 변화 관리 작업 스케줄러: 스풀러가 디스크에 저장한 작업 중 실행할 작업을 선장하고 준비 큐에 삽입한다. 프로세스 스케줄러: 선정한 작업의 상태를 변화시키며 프로세스의 생성에서 종료까지의 과정을 수행한다. 프로세스 제어 블록 프로세스 제어 블록을 통해 프로세스를 제어할 때 필요한 프로세스 상태 정보를 저장한다...

컴구&운영체제 2023.04.12

순환 알고리즘과 반복 알고리즘

순환 알고리즘 순환 알고리즘이란 알고리즘이나 함수가 수행 도중에 자기 자신을 다시 호출하여 문제를 해결하는 기법을 말한다. 문제의 정의 자체가 순환적으로 되어 있는 경우에 적합한 방법이다. 그러나, 예로 들어 피보나치값을 계산할 때 같은 항을 중복해서 계산했던 것처럼 함수 호출의 오버헤드 문제가 발생할 수 있다. 순환 알고리즘은 순환 호출을 하는 부분과 순환 호출을 멈추는 부분으로 이루어져 있다. 반복 알고리즘 반복 알고리즘은 for나 while을 이용하여 반복한다. 수행속도가 빠르지만, 순환적인 문제에 대해서는 프로그램 작성이 어려울 수 있다. 다양한 알고리즘 1. 팩토리얼 구하기 int factorial_recur(int n) { // 순환적 방법 if (n == 1) return 1; return ..

알고리즘 2023.04.10

알고리즘의 성능 분석(시간 복잡도, 공간 복잡도, 빅오 표기법)

알고리즘의 성능 분석 방법 1. 수행 시간 측정 두 개의 알고리즘의 실제 수행 시간을 측정한다. 실제로 구현하여야 하며, 동일한 하드웨어를 사용해야 한다. 2. 알고리즘의 복잡도 분석 알고리즘이 수행하는 연산의 횟수를 측정하여 비교한다. 실제로 구현하지 않아도 된다. 연산의 수행 횟수는 입력의 개수 n에 대한 함수이다. 2-1) 시간 복잡도 전체 소요 시간 = 컴파일 시간 + 실행 시간 방법: 전역 변수 count의 사용, 단계수 테이블 방식 2-2) 공간 복잡도 공간 요구량 = 고정 공간 요구 + 가변 공간 요구 고정 공간: 프로그램 입출력의 횟수나 크기와 관계없는 공간 가변 공간: 해당 문제의 인스턴스(I)에 의존하는 공간 Asymptotic Notation(점근 표기법) 점근 표기법에는 빅오(함수의..

알고리즘 2023.04.10

자료구조의 소개(자료구조, 알고리즘, 데이터 추상화)

프로그램 = 자료구조 + 알고리즘 프로그램의 자료구조와 알고리즘으로 만들어진다. 그러므로 개발자가 효율적인 프로그램을 작성하기 위해서는 자료구조란 무엇이고 어떤 종류가 있는지, 어떻게 하면 효율적인 알고리즘을 구현할 수 있을지를 고민해야 한다. 또한, 이 둘의 설명과 더불어 크고 복잡한 문제를 단순화시킬 수 있는 데이터 추상화 개념을 숙지해야 한다. 자료 구조란? 자료구조란 자료를 효율적으로 사용하기 위해 자료의 특성에 따라 분류하고 구성, 저장, 처리하는 모든 작업이다. 알고리즘이란? 알고리즘이란 특정한 일을 수행하기 위한 명령어의 유한 집합을 말한다. 기준 입력: (외부)원인 >= 1 출력: 결과 >= 1 명백성: 모호하지 않은 명확한 명령 유한성: 한정된 수의 단계 후에는 반드시 종료 유효성: 각 ..

자료구조 2023.04.10

그림으로 배우는 구조와 원리 운영체제(구현회) 2장 연습문제 풀이

1. 운영체제의 기능으로 적당하지 않은 것은? ① 컴퓨터 시스템의 초기화 기능 ② 효율적인 자원 관리와 할당 기능 ③ 고급 언어로 작성한 프로그램을 기계어로 번역하는 기능 ④ 오류 검사 및 복구 기능 더보기 정답: ③, 고급 언어로 작성한 프로그램을 기계어로 번역하는 기능은 명령 해석기 중에서도 컴파일러의 기능이다. 2. 운영체제의 목적과 가장 거리가 먼 것은? ① 사용자 인터페이스 제공 ② 주변장치 관리 ③ 데이터 압축 및 복원 ④ 신뢰성 향상 더보기 정답: ③, 운영체제의 목적은 편리성(사용자 인터페이스 제공), 효율성(처리량 향상, 지연 및 응답 시간 단축, 신뢰성 향상, 사용 가능도 향상), 제어 서비스 향상(주변장치 관리)이다. 3. 운영체제의 성능 판단 요소로 거리가 먼 것은? ① 처리 능력 ..

컴구&운영체제 2023.04.06

운영체제의 소개(개념과 발전 목적, 기능, 발전 과정과 유형, 서비스, 구조)

1. 운영체제의 개념과 발전 목적 컴퓨터 시스템의 구성 요소 컴퓨터 자원관리 면에서 운영체제의 역할 조정자: 프로그램이 작업을 할 수 있는 환경을 제공 자원 할당자나 관리자: 각 응용 프로그램에 필요한 자원을 올바른 순서로 할당 응용 프로그램과 입출력장치 제어자: 다양한 입출력장치와 응용 프로그램을 제어 운영체제의 발전 목적 2. 운영체제의 기능 ※ 운영체제는 메인 메모리와 보조기억장치를 관리한다. ※ 프로세스는 운영체제 프로세스와 사용자 프로세스로 구분된다. 3. 운영체제의 발전 과정과 유형 운영체제의 발전 과정 1940년대: 운영체제 없음, 순차 처리 시스템 1950년대: 일괄 처리 시스템, 버퍼링, 스풀링 1960년대: 다중 프로그래밍, 시분할, 다중 처리, 실시간 처리 시스템 1970년대 초반: ..

컴구&운영체제 2023.04.06
728x90