본문 바로가기

전체 글

(17)
[OS - File System] File Protection 1. File Protection : 파일에 대한 부적절한 접근을 방지한다. (다중 사용자 시스템에서 필요) 접근 제어가 필요한 연산들 (Read, Write, Execute, Append) 2. File Protection Mechanism 1) Password 기법 : 각 file들에 PW 부여 (각 파일에 대한 PW를 기억해야 하므로, 현실적으로 어려움) 2) Access Matrix 기법 : Domain(사용자, 그룹)과 Object(개체) 사이의 접근 권한 명시 Global Table : 전체 file에 대한 권한을 Table로 유지 (Large table size의 문제 - overhead) Access List : Access matrix의 열을 list로 표현한다. (ex UNIX rwx-..
[OS - File System] Directory Structure 1. Directory Structure (이하 DS) : 파일들을 분류하고 보관하기 위한 자료 구조 1) Flat DS : FS내에 하나의 DS만 존재 (Single-level DS) - Issues : File naming(Conflict), File protection, File management, 다중 사용자 환경에서 더 많은 이슈 2) 2-Level DS : 사용자마다 하나의 DS 배정 구조 : MFD / UFD Issue : 하위 DS생성 불가, User간 파일 공유 불가 3) Hierarchical DS : 트리 형태의 계층적 DS 사용자가 하위 DS 생성 및 관리 가능 (OS에 의해 System call이 제공되어야 함) Home directory / Current directory , ..
[OS - File System] Overview 1. File System 이란? : 사용자들이 사용하는 파일들을 관리하는 운영체제의 한 부분이다. Files, Directory structure, Partitions로 구성된다. 2. File 이란? : 보조 기억 장체에 저장된 연관된 정보들의 집합 (바이트의 연속) - 내용에 따른 분류 : Program file(source program, object program, executable... ), Data file - 형태에 따른 분류 : Text file, Binary file 1) File attributes(속성) : Name, Identifier, Type, Location, Size ... 2) File operations : Create, Write, Read, Reposition, D..
[ C ] scanf / scanf_s 차이점 1. scanf_s 란? This function is specific to Microsoft compilers. It is the same as scanf, except it does not cause buffer overload. It takes the input in a text based console program and places it into a variable. : 즉, scanf와 같이 입력을 받는 기능은 동일하지만, scanf에서 문제가 되었던, 버퍼 오버플로우를 방지할 수 있다. [↓ 비주얼 스튜디오에서 'scanf' 함수를 사용했을 때, 나타나는 에러] 'scanf': This function or variable may be unsafe. Consider using scanf_s..
[Python] 배열 생성하기(2차원, 3차원) 여러 알고리즘 문제들을 풀면서 배열을 지속적으로 생성하다보니 정리의 필요성을 느꼈다. numpy를 활용한 배열 생성 방법들이 있는 것으로도 아는데, 추후 알아보고 업데이트를 목표로 잡아본다. [ 배열 선언하기 ] 1. 2차원 배열 생성하기 2d_arry = [[0 for _ in range(column)] for _ in range(row)] 2. 3차원 배열 생성하기 3d_array = [[[0 for _ in range(column)] for _ in range(row)] for _ in range(level)] 2~3중 반복문을 선언함에 따라서 'range'의 파라미터는 열(컬럼) → 행(로우) → 층(레벨)의 순서로 선언하면 되며, 최초 초기화할 값 (0, None... 등)에 따라..
[알고리즘] 위상정렬(Topological Sort) Concept 1) 개념 "순서가 정해져 있는 작업들의 순서를 정해주기 위해 사용하는 알고리즘." 방향 그래프(유향 그래프, Directed Graph)의 꼭짓점(Vertex)들을 방향에 거스르지 않도록 나열하는 것을 의미한다. 위상 정렬이 성립하기 위해서는 반드시 그래프의 순환이 존재하지 않아야 한다. (시작점을 찾을 수 없기 때문) ex) 선수과목(prerequisite) 구조, 업무 일정 배치(PERT - 일정관리 평가 분석) 2) 수행 과정 ① 자기 자신을 가리키는 변이 없는 버텍스(노드)를 찾는다. ② 찾은 버텍스를 출력하고, 출력한 버텍스와 그 버텍스에서 출발하는 간선(edge)을 삭제 ③ 아직 그래프에 버텍스가 남아있으면 단계 1로 돌아가고, 아니면 알고리즘을 종료한다. 3) 시간복잡도 O(..
[알고리즘 공부] 동적계획법(Dynamic Programming) [ 컨셉 ] 1. 문제에 대한 접근 방식을 일컫는다 2. 큰 문제를 작은 문제로 나누어 해결해 나가는 것 Q. 분할정복 기법 또한 부분 문제로 나눠 해결하는 과정인데 무엇이 다르지? 부분 문제의 중복이 핵심. 부분 문제의 중복이 많이 일어나는 문제의 경우, 분할 정복은 해결에 어려움이 있을 수 있다. [ 동적계획법의 종류 ] 1. 하향식 방법 (Top-down) 재귀함수를 통해 하위 문제들을 해결해 나가는 방식 많은 중복이 발생하는 경우, 재귀적인 풀이는 효율성에 문제가 발생할 수 있다. "Memoization"을 통해 해결 된 하위 문제들을 캐싱(Caching)하여 중복을 해결하여 오버헤드를 줄일 수 있음. 2. 상향식 방법 (Bottom-up) 가장 하위의 문제부터 시작하여 순차적으로 해결해 나가는 ..
[문제풀이] Python- 백준 9020문제 (골드바흐의 추측) www.acmicpc.net/problem/9020 (TMI - 너무 고통스러웠던 문제였다) 수학자 골드바흐가 제시한 추측한 유명한 미해결 문제로, 모든 짝수는 두 소수의 합으로 만들어 질 수 있다는 내용이다. 수 많은 시행착오.. (런타임 에러, 시간초과 등등)을 거쳐 해결한 방식은 아래와 같다. 더보기 [풀이 방식] 1. Size = 10000의 배열을 만든 뒤, 각 숫자가 소수인 경우와 아닌 경우를 True / False로 입력하여 구별 (소수는 에라토스테네스의 체를 활용하여 구한다) 2. 출력 될 2개의 수는 오름차순이므로, 앞자리 수가 작아야하며, 주어진 값의 절반 값에서 부터 시작하며 배열을 이용하여 점점 작은 소수를 탐색한다. (ex 10,000이라면 5,000 이하의 소수) 3. 주어진 값..