목록CS (29)
To Be myself
정렬내부 정렬모든 데이터를 주기억장치에 저장하고 정렬 비교 기반 정렬 - 두 데이터를 직접 비교하여 정렬, 키 값의 비교 횟수로 알고리즘 성능 나타냄ex. 선택 정렬, 버블 정렬, 삽입 정렬, 셀 정렬, 합병 정렬, 퀵 정렬, 힙 정렬vs데이터 분포 기반 정렬- 데이터의 분포 정보를 활용해 정렬, 데이터 이동 횟수로 알고리즘 성능 나타냄ex. 계수 정렬, 기수 정렬, 버킷 정렬 안정적 정렬동일한 값을 가진 데이터들이 정렬을 하고 나서도 상대적인 위치가 같게 유지되는 정렬 제자리 정렬입력 배열의 데이터 개수와 관계없이 일정한 상수개 외에 별도로 저장 공간이 필요하지 않은 정렬 선택 정렬 (Selection Sort)- 가장 작은 값부터 순서대로 선택해서 정렬 -> 정렬 안 된 부분에서 최솟값 찾고 ..
알고리즘알고리즘 분석정확성 분석: 유한한 시간내에 얼마나 정확한 결과를 내는지 수학적으로 증명 효율성 분석: 수행에 필요한 자원의 양을 측정 - 공간 복잡도: 메모리 양 (정적 + 동적)- 시간 복잡도: 수행 시간 (입력 크기의 함수와 최악의 수행시간) *(실용적) 모든 연산이 아닌 루프반복 횟수만 조사하고 최고 차수로 정함 점근 성능무한한 입력 크기에 따라 결정되는 성능실용적으로는 최고차수만으로 시간 복잡도를 표현 Big O (빅오) 점근적 상한, 최악의 수행시간 Big Ω (빅 오메가)점근적 하한, 최선의 수행시간 Big θ (빅 세타)점근적 상하한 O-표기 함수 간의 크기 관계상수 로그 선형 로그 선형 제곱 세제곱 지수O(1) 순환 알고..
알고리즘알고리즘을 왜 배우는가?알고리즘을 설계하고 분석하는 방법을 배우면, 컴퓨터로 문제를 해결하는 방법을 체계적으로 생각하면서 지적 추상화 및 통찰력이 향상될 수 있다.기본 개념문제를 풀기 위한 절차/방법의 명령어 들을 단계적으로 나열 정의한 개 이상의 출력을 만들기 위해 (입출력), 컴퓨터에서 수행 가능한 (유효성) 단순하고 명확한 (명확성) 명령들의 유한한 단계(유한성)를 거쳐 종료해야 한다. + (효율성) 설계욕심쟁이 방법 (Greedy Method, 탐욕 알고리즘)각 단계에서 가장 최선이라고 생각되는 국부적인 최적의 해를 선택해나가면서 전체의 최적해를 찾는 전략간단하면서 효율적인 알고리즘을 만들 수 있음최솟값/최댓값 구하는 최적화 문제 ► 거스름돈 문제동전의 개수를 최소화하면서 거스름돈을 돌려주..
구문론- 의미(의도)가 애매모호하지 않고 명확하게 정의되어야 한다 의미론- 언제나 의미가 동일하게 해석되어야 한다. 기계어- 0과 1로 이루어진 2진수 언어로 컴퓨터 하드웨어를 직접 제어할 수 있는 수준. 사람이 이해하거나 프로그램 작성이 어려워 범용성이 낮음 어셈블리어- 기계어의 명령어를 사람 언어와 유사한 알파벳 형태로 바꾼 언어. 기계어보단 읽기 쉽지만 논리 순서가 컴퓨터에 초점을 둠
중앙처리장치(CPU)- 제어장치, 산술논리연산장치(ALU), 레지스터로 구성- 처리장치 : ALU + fpwltmxj 제어신호: 데이터 처리 연산을 실행시키는 이진신호, 제어장치가 처리장치에 제공상태신호: 처리장치의 상태를 나타내는 상태비트로 연산의 순서 정함, 처리장치로부터 제어장치가 전송받음 기억장치주기억장치: 연산에 필요한 프로그램, 데이터, 중간 결과, 연산 결과 등 저장캐시보조기억장치 입출력장치- 입력장치: 사용자의 입력 값을 컴퓨터 알 수 있는 형태로 변환- 출력장치: 연산 겨로가를 사람이 알 수 있는 형태로 변환해서 내보냄 시스템버스버스: 2개 이상의 장치를연결해주는 통신 선로시스템버스: 중앙처리장치, 기억장치, 입출력장치의 연결 및 데이터 통로 역할 - 주소버스 / 데이터 버스 / 제어버스..
운영체제의 역할- 프로세서 관리자 : CPU에서 실행중인 프로그램이나 작업인 프로세스의 리소스를 담당하며 상태를 변경한다.- 주기억장치 관리 : 주기억장치인 메모리를 할당하고 프로세스로부터 회수하면서 효율적인 관리를 한다.- 장치 관리자 : 운영체제 스케줄링 기법에 따라 컴퓨터의 장치(키보드, 프린터, 디스트 등)들을 관리한다.- 파일 관리자 : 보조기억장치의 시스템 프로그램, 응용 프로그램 등 파일의 읽기 쓰기를 관리한다. 운영체제의 처리 방식1) 일괄처리 시스템1950년대 한 번에 하나의 작업만 가능하고 모든 컴퓨터 자원을 독점하면서 문제가 생겼다. 따라서 일괄처리 시스템으로 여러 작업을 모아뒀다가 일정량 이상이 모이면 한꺼번에 처리하는 방식으로 작업한다. 자원 효율성을 높아지나 결과를 빠르게 확인하..
분석정확성 분석: 유효한 입력이 주어졌을 때 유한한 시간 내에 정확한 결과가 나오는지다양한 케이스를 처리할 수 있는지 확인하면서 수정해나가기 효율성 분석: 컴퓨터 자원(메모리)의 양과 수행 시간을 통해 평가 => 적은 메모리와 더 빠른 수행 시간- 공간 복잡도: 총 메모리 양 = 정적인 공간과 동적인 공간의 합- 시간 복잡도: 알고리즘 실행 시간. 최선의 수행시간 (가장 빠른 시간) / 일반적인 상황에서의 평균 수행시간 / 최악의 수행시간 점근 성능입력 크기 n이 커지면서 결정되는 알고리즘 성능입력 크키가 커질 수록 식의 최고차항을 고려해 수행 시간을 표현함Big-oh (점근적 상한) : 입력 크기 n이 커지면 최악의 수행시간은 g(n)에 비례함 (O(g(n))Big-omega (점근적 하한) : 좋은 ..
개념정의주어진 문제를 해결하기 위한 풀이 과정 조건: 입출력, 명확성, 유한성, 유효성생성단계기술방법: 자연어, 의사코드, 프로그래밍 언어, 순서도 등 자료구조와의 관계알고리즘에 적합한 자료구조, 자료구조에 적합한 자료구조 선정이 효율적인 프로그래밍의 기초 설계 기법분할정복 방법하향식 접근 방식문제의 입력을 더 나눌 수 없을 때까지 2개 이상의 작은 문제로 순환적(recurisvely)으로 분할하고 분할된 문제를 각각 해결한 뒤 그 해를 결합- 작업 방법: 분할 > 정복 > 결합문제를 작게분할하는 것이 중요예. 이진탐색, 퀵 정렬, 합병 정렬 동적 프로그래밍 방법욕심쟁이 방법
추상화공통적인 개념을 통해 같은 객체를 정의하는 것 자료구조추상화로 자료의 논리적인 관계를 표현한 것 배열동일한 변수에 동일한 자료형의 데이터를 일렬로 저장한 자료구조원소의 논리적 순서 = 원소가 저장된 물리적 순서인덱스(첨자): 변수에서의 데이터 위치원소(값): 변수에 저장된 데이터 자체 1차원 배열: 1개의 인덱스로 데이터접근 A[i]2차원 배열: 행과 열로 구성, 2개의 인덱스 A[i][j]- 열우선 순서 행렬: 첫 번째 원소부터 저장- 행우선 순서 행렬: 첫 번째 행 원소부터 저장희소행렬: 0이 아닌 원소의 (행번호, 열번호, 값) 형태로 저장한 2차원 배열 연결 리스트원소의 논리적 순서가 실제 저장된 순서와 다름노드 = 데이터필드 + 링크 필드데이터필드: 원소값링크필드: 다음 원소의 노드 주..
컴퓨터 시스템의 구성하드웨어폰 노이만 모델- 컴퓨터 내부 구조와 처리를 정의한 모델- 실행될 프로그램은 메모리에 저장되어야 한다는 내장 프로그램 방식을 주장- 프로그램은 유한개의 명령어 조합으로 필요한 부분은 재사용할 수 있음 - 기억장치: 주기억장치, 보조기억장치- 산술논리연산장치(ALU): 산술 및 논리 연산 수행- 제어장치(CU): 다른 장치의 동작을 제어* 중앙처리장치(CPU) = 산술논리연산장치 + 제어장치- 입력장치: 키보드, 마우스, 마이크- 출력장치: 모니터, 프린터, 스피커*보조기억장치도 입출력장치가 될수있음 소프트웨어시스템 소프트웨어: 컴퓨터 자체의 작업 관리와 기능 수행 - 컴파일러, 운영체제, 유틸리티 등응용 소프트웨어: 사용자가 이용하는 프로그램 - 워드프로세서, 데이터베이스, 그..