운영체제 2023-03-29 수업정리
Flow Thread & Multithreaded Process Multicore Programming Process vs Thread Multithreading Models Virtualization Thread Thread Software적으로 병렬화를 제공하는 방법이다. CPU Utilization의 기본 단위이다. Single Processer환경에서도 Thread를 이용하면 Concurrency를 보장하여 한 번에 여러 동작을 하는 것처럼 보이게 할 수 있다. Thre…
프로그래밍언어론 2023-03-28 수업정리
Flow review Syntax & Grammar Grammar Example Ambiguity review 프로그래밍언어론 3.28 수업정리에서 이어진다. Basic은 1980년대의 Micro PC, GUI 등의 환경 및 GW Basic, Apple Basic을 거쳐 Visual Basic이 되었다. SNOBOL(문자열 처리 언어) 는 Perl에 영향을 주었다. LISP(심볼 처리), APL(행렬, 벡터 연산)은 이후 Haskell, ML, Scala, clojure등 함수형…
컴퓨터 알고리즘 2023-03-27 수업정리
Flow Divide & Conquer - Matrix multiplication Strassen's trick & algorithm Dynamic Programming Divide & Conquer - Matrix multiplication N*N 행렬 A, B의 곱셈에 Divide & Conquer를 적용하면 아래와 같다.$$C = A\times B,\ \begin{bmatrix}C_{11}&C_{12}\C_{21}&C_{22}\ \end{bm…
운영체제 2023-03-27 수업정리
Flow IPC IPC - Shared Memory IPC - Message Passing Examples of IPC Systems Communications in Client-Server Systems IPC IPC(Inter Process communication) 시스템에 속한 프로세스들은 independent일수도 있고, cooperating일수도 있다. Reason for Cooperating Process 정보의 공유 계산속도 향상 모듈화 편의성 cooperating프로세…
7576 - 토마토
난이도: 골드 5 날짜: 2023년 3월 24일 상태: Correct 추가 검토 여부: Todo Implement with Graph Theory(BFS) 알고리즘 : Graph(BFS), heuristic(?) 나중에 BFS를 이용하여 풀이 시도해 볼 것 Solution 보자마자 그래프 문제인 것은 알았지만 어떻게 풀어야 할지 감이 잡히지 않았다. 그냥 내가 짠 알고리즘대로 풀이에 도전했고, 초기 코드는 시간복잡도로 인한 시간초과 문제가 있었으나 해결했다. 아래는 내 접근법이다. 오늘…
프로그래밍언어론 2023-03-23 수업정리
Flow 시대별 정리 BASIC 실습(II) Late 1950's ~ Early 1960's Target machine들은 일괄 처리 환경을 가지고 있었다. 작업 제출과 결과 수령 사이의 간격(turnaround time)이 컷다. -> 1~2days Languages (Big - 4) FORTRAN(1957) - 기본적인 제어 구조 제시 ALGOL(1958) - 블록 구조 제시 LISP(1959) - 기호 계산 COBOL(1960) - record 1960's Target…
소프트웨어시스템설계 2023-03-22 수업정리
Flow Refactoring (end) More Refactoring Techniques (1) Refactoring Example Refactored UML Step 1 응집도를 고려하여 getCharge()함수와 getFrequentRenterPoint() 함수를 Rental 에서 Movie로 이동시켰다. getCharge() 의 경우 Rental이 아닌 Movie의 attribute를 사용하므로 Move method하여 이동시켰다. getFrequentRenterPoint() …
운영체제 2023-03-22 수업정리
Flow Process scheduling Scheduler Process creation & termination Process scheduling 주어진 실행 가능한 프로세스 목록 중에서 어떤 프로세스를 실행할 것인지 정하는 규칙 빠르고 빈번하게 일어난다. 이런 규칙은 크게 아래와 같이 분류할 수 있다. non-preemptive scheduling 실행 중인 프로세스에서 CPU 자원을 해제할 때까지 기다려야 한다.(yeild()) 프로세스 간 조율이 중요하다. preem…
2630 - 색종이 만들기
난이도: 실버 2 날짜: 2023년 3월 21일 상태: Correct 추가 검토 여부: No 알고리즘 : Divide and Conquer Solution 분할정복을 활용한 recursion을 통해 문제의 요구대로 구현하였다. 2차원 배열을 계속해서 생성할 수 없으므로 원본 배열에서 왼쪽 위의 인덱스를 넘기는 방식으로 subarray에 대한 순회를 구현했다. pair를 사용하여 흰 종이와 파란색 종이의 개수를 셌다. 2차원 배열 구간 순회의 인덱싱에 있어 숙련도가 부족해 틀린 답이 계속 출…
프로그래밍언어론 2023-03-21 수업정리
Flow Simula I(1962) and Simula 67 Smalltalk(1972) Traditional C(K&R C) (1972) Objective-C(1984) C++(1985) Java(1995) JavaScript(1995) and PHP(1994) Perl(1987), Python(1991), Ruby(1990) Simula I(1962) and Simula 67 SIMUlation Language -> SIMULA Ole-Johan Dahl에 의해 1962년 …
2606 - 바이러스
난이도: 실버 3 날짜: 2023년 3월 20일 상태: Correct 추가 검토 여부: No 알고리즘 : DFS Solution 그래프를 구현하여 상황을 입력받고, 입력받은 상황에 대하여 DFS탐색을 통해 인접한 노드의 수를 구하면 되는 문제이다. 아직 Graph및 DFS구현이 서툴러서 많이 틀렸다. 1260번의 DFS코드를 참고했다. DFS의 경우 현제 노드, 인접 리스트, 방문 확인 리스트의 입력을 필요로 한다. 인접 리스트의 경우 1260번과 달리 이중 벡터로 구현했다. dfs의 r…
컴퓨터 알고리즘 2023-03-20 수업정리
Flow Divide and Conquer - Quicksort Divide and Conquer - Quicksort Quicksort Algorithm(퀵 정렬) 배열은 재귀적으로 두 개의 partition으로 나눠진다.(Divide) 배열은 pivot값을 기준으로 pivot값보다 작은 partition, pivot값보다 크거나 같은partition의 두 개의 sub-arrays로 나눠진다. 나눠진 두 개의 partition배열에 대해서 정렬이 이루어진다.(Conquer) Merg…
소프트웨어시스템설계 2023-03-20 수업정리
Flow Refactoring (3) Refactoring Example Original UML Refactoring UML ~Step2 Template Method Pattern이란? Common Code가 존재하는 서로 다른 두 클래스 간에서, Common Code부분을 template method로 superclass에 구현한다. 서로 다른 구현부는 superclass 에서 abstract method로 남겨둔 뒤 subclass에서 override를 통해 구체적인 구현을 수행한다.…
운영체제 2023-03-20 수업정리
Flow Process creation hierarchy termination state Implementing Process Context Switch Process 프로세스란? Program in execution, 즉 실행 중인 프로그램을 프로세스라고 말한다. 프로세스는 아래를 포함한다. CPU contexts(registers) -> 연산상태 저장 Program Counter, Stack Pointer -> 프로그램 실행 정보 OS resources(주소 공간, …
프로그래밍언어론 2023-03-16 수업정리
Flow IAL(ALGOL)(1958) COBOL(1960) APL(1962), SNOBOL(1962) PL/I(1964), C(1972) BASIC(1964) IAL(ALGOL)(1958) IAL International Algorithmic Language FORTRAN을 만든 사람인 John Backus등 유럽과 미국의 여러 사람들의 합작으로 만들어졌다. 이 언어의 탄생 배경은 당시 사용되던 FORTRAN이 IBM 타겟 머신에서만 동작하였고, 이에 알고리즘 기술용 언어로 개발되었다. …