Computer Basis
-
[Algorithms] 정렬 알고리즘의 종류와 시간복잡도, 사용처 (+ Java 구현코드)Computer Basis/Algorithms 2021. 11. 8. 22:50
* 구현코드는 제일 아래에 있습니다. * 개념정리는 없습니다 😞 위키 백과가 최고에요,,, # 정렬알고리즘의 종류와 시간복잡도 Sort Best Avg Worst Details Selection Sort (선택정렬) $$O(n^2)$$ $$O(n^2)$$ $$O(n^2)$$ Bubble Sort (버블정렬) $$O(n^2)$$ $$O(n^2)$$ $$O(n^2)$$ Insertion Sort (삽입정렬) $$O(n)$$ $$O(n^2)$$ $$O(n^2)$$ 어느정도 정렬된 데이터에 Best! Quick Sort (퀵정렬) $$O(nlog_{2}n)$$ $$O(nlog_{2}n)$$ $$O(n^2)$$ 대부분 표준라이브러리에서 채택됨 Merge Sort (병합정렬) $$O(nlog_{2}n)$$ $$O(..
-
[Algorithms] 백준 DP 문제모음 (bottom-up 유형)Computer Basis/Algorithms 2021. 11. 1. 20:21
# 이친수 (2193번) 1. 곱셈 연산이나, 덧셈 연산은 큰 수 끼리 연산 수행 시 overflow 가 발생할 수 있음을 유의!!!!! (매우매우 중요) 저번에도 당하고 또 당하는 단골문제... import java.util.Scanner; public class Main{ // not starting with 0 // no serial 1 // how many binary with condition above, on size N // 1
-
[Algorithms] 백준 DP 문제모음 (Top-down 유형)Computer Basis/Algorithms 2021. 10. 30. 16:55
# 포도주 시식 (2156번) 1. Top-down 유형에 익숙해지자... 2. 항상 기본적인 예외 체크를 신경쓰자...!!! (n이 최소,최대 일 때) import java.util.Scanner; public class Main { static int[] drink; static int[] podoJu; //drink(n) : n(마지막) 잔을 마셨을 때 최대로 마시는 양 //case 1 : drink(n) = pick(n-1)+pick(n)+drink(n-3) //n-1 //case 2 : drink(n) = pick(n)+drink(n-2) //n-2 //case 3 : drink(n) = pick(n)+drink(n-3, n-4, ..) //vast jump //case 3 never happe..
-
행렬연산을 위한 자료구조, Tensor, Torch 를 자바로 재구현 해보자!Computer Basis/Algorithms 2021. 10. 14. 13:11
본문은 아직 완성되지 않았음. # 행렬연산을 위한 자료구조 Tensor, Torch - 1차원 배열로 구성되어있다. - offset, strides 의 개념으로 모든 것을 해결 - 전치행렬을 만들때 압도적인 성능 - 행렬의 곱셈연산은 O(n^2) 로 추정 (직접 구현하고 추후 수정예정) # 크기가 n인 정방행렬을 전치행렬로 만들때 Brute-force 시간복잡도 - 3중포문, O(n^3) # Tensor 구조로 전치행렬 시간복잡도 - O(1) - 2차원 배열로 바꿀때, O(n^2) - 데이터 복사 시간 # Tensor.class public class Tensor { public int[] tensor; public int offset; public int[] strides; public int rowL..
-
운영체제(OS) - 9. Distributed System (분산시스템)Computer Basis/OS 2020. 12. 7. 00:30
# Distributed System 컴퓨터 간 서로 데이터를 교환하여 처리할 수 있도록 네트워크로 상호연결한 시스템 메모리와 클록을 공유하지 않고, 지역 메모리를 유지하여 서로 독자적으로 동작 # 다중처리 시스템(병렬처리 시스템) 컴퓨터 간 서로 데이터를 교환하여 처리할 수 있도록 네트워크로 상호연결한 시스템 또는 CPU가 여러개인 단일컴퓨터 시스템 여러개의 프로세서(CPU)들이 메모리를 공유하는 시스템 # 네트워크로 연결된 시스템의 종류 1. Tightly Coupled System 프로세서(CPU)들이 메모리를 공유하는 다중처리 시스템 공유 메모리를 통하여 통신 2. Loosely Coupled System 둘 이상의 독립된 시스템이 통신선(네트워크)로 연결된 시스템 통신선(네트워크)을 통하여 메시..
-
운영체제(OS) - 8. 대용량 저장장치(디스크관리)Computer Basis/OS 2020. 11. 16. 00:31
1. 디스크의 구조 디스크는 논리블록(logical block)단위로 데이터를 저장하며, 입출력 역시 논리블록 단위로 전송한다. 논리블록에 접근하기 위해서는 블록의 인덱스 번호를 디스크에 전달해야한다. 디스크 컨트롤러는 인덱스를 가지고 해당 논리블록 물리적위치에 접근하여 입출력 작업을 수행한다. 논리블록의 물리적 위치를 섹터(sector)라 칭하며, 1:1 매핑관계이다. 디스크는 다수의 마그네틱 원판으로 구성되며 원판은 다수의 트랙(track), 트랙은 다수의 섹터(sector)로 구성된다. 상대적 위치가 동일한 트랙들의 집합을 실린더(cylinder)라 칭한다. 섹터 0은 최외곽 실린더의 1번째 트랙에 있는 1번째 섹터이다. 디스크에 데이터 읽기/쓰기를 위해 암(arm)이 해당섹터가 위치한 실린더로 이..
-
운영체제(OS) - 7. 가상메모리Computer Basis/OS 2020. 11. 14. 02:12
# 가상메모리 각 프로그램이 0번지부터 시작하는 자기 자신만의 메모리주소공간을 가정하여 사용하는 것 # 장점 ▶ 주기억 장치의 효율적관리 주기억장치를 하드디스크에 대한 캐시로 설정하여, 당장 사용하는 영역만 메모리에 올리고, 나머지는 하드디스크의 스왑영역(BackingStore, Swap area)에 내려놓는다. ▶ 메모리 관리의 단순화 각 프로세스마다 가상메모리의 통일된 주소공간을 배정할 수 있으므로 메모리 관리가 단순해짐 ▶ 메모리 용량 및 안정성 보장 한정된 공간의 RAM이 아닌 거의 무한한 가상메모리 공간을 배정함으로써, 프로세스 간의 메모리 침범의 여지를 줄임 # 요구 페이징(demand paging) & 요구 세그멘테이션(demand segmentation) 프로세스의 주소공간을 메모리로 적재..