본문 바로가기

분류 전체보기560

[컴퓨터구조] 컴퓨터의 구성 요소 컴퓨터 구성요소 1) 중앙처리장치(CPU, Central Processing Unit) - 메모리에 저장된 명령어를 읽어들여 수행하는 주체 - 명령어 사이클(Fetch/Execution)을 반복해 프로그램을 실행 (1) ALU(Arithmetic and Logic Unit) - 데이터 처리 - 산술/논리 연산을 수행하는 장치 (2) 제어장치(CU, Control Unit) - 명령어 레지스터에 저장된 명령어를 해석 - 각 컴퓨터 구성요소를 제어할 제어신호를 생성 - 컴퓨터 구성요소는 제어장치의 관리를 받음 (3) 레지스터(Register) - 명령어를 실행하기 위해 필요한 데이터와 상태, 명령어를 저장 (4) 내부 버스(Internal Bus) - CPU 내부의 구성요소 간 데이터 전달과 연결을 위한 경.. 2020. 7. 13.
[알고리즘] 합병정렬(Merge Sort) 합병정렬(Merge Sort) - 분할 정복(Divide and Conquer) 알고리즘 - 주어진 배열을 두 개의 배열로 계속 분할한 뒤, 합치면서 정렬 - 합병 과정에서 O(n), 분할 과정에서 O(logn)으로 O(nlogn)의 시간복잡도를 가짐 - 합병을 위한 배열을 추가로 필요로 함 선택정렬(Selection Sort) 과정 1) 분할 n개의 데이터가 주어졌을 때, 더 이상 분할할 수 없도록 배열을 두 개로 분할한다. 2) 합병 분할과정에서 나누어진 배열을 정렬을 유지한 상태로 합쳐나간다. 3) 합병 과정 자세히보기 위의 두 배열을 합치는 과정을 통해 합병 단계를 자세히 살펴보면 두 배열을 합칠 새로운 공간을 하나 만든다. 두 배열을 첫번째 위치를 표시하는 인덱스 i(left), j(mid + .. 2020. 7. 13.
[알고리즘] 버블정렬(Bubble Sort) 버블정렬(Bubble Sort) - 제자리 정렬(In-placed sorting) 알고리즘 - 인접한 두 개의 데이터의 대소값을 비교해 정렬하는 방식 - 1 cycle 이 후, 가장 큰 값이 맨 뒤에 위치 - 구현이 간단 - 시간 복잡도 : O(n^2) 선택정렬(Selection Sort) 과정 n개의 데이터가 주어졌을 때, 첫번째 인덱스부터 시작해 인접한 두 개의 값을 비교해 값을 비교해가며 정렬을 한다. 한 사이클을 다 돌게 되면 가장 큰 값이 맨 뒤에 위치하게 된다. 두번째 사이클도 첫번째 사이클과 마찬가지로 첫번째 인덱스부터 시작해 인접한 두 값을 비교해 정렬을 한다. 단, 맨 뒤의 값은 이전 사이클에서 이미 가장 큰 값이 위치하기 때문에 n - 1 번째 인덱스까지 정렬을 한다. 즉, i번째 사이.. 2020. 7. 13.
[알고리즘] 삽입정렬(Insertion sort) 삽입정렬(Insertion Sort) - 제자리 정렬(In-placed sorting) 알고리즘 - 카드를 정렬하는 방법과 유사 - 주어진 데이터에서 첫 번째 인덱스부터 시작해 이미 정렬된 부분에서 가장 적절한 위치를 찾아 삽입하는 방식 - 주어진 데이터의 정렬 상태에 따라 O(n)에서 O(n^2)의 시간 복잡도를 가짐 선택정렬(Selection Sort) 과정 n개의 데이터가 주어졌을 때, 첫번째 인덱스부터 가장 적절한 위치를 찾는다. 그림에서 체크 표시가 이미 정렬된 상태의 데이터 중 삽입이 가능한 위치가 된다 첫번째 인덱스에서는 정렬된 상태의 데이터가 없기 때문에 가능한 위치는 맨앞이 된다 두번째 인덱스를 정렬할 때, 이미 첫번째 사이클에서 정렬된 7의 앞과 뒤, 두 곳에 위치할 수 있다. 8은 7.. 2020. 7. 13.
[알고리즘] 선택정렬(Selection sort) 선택정렬(Selection Sort) - 제자리 정렬(In-placed sorting) 알고리즘 - 주어진 배열 중 최소 값을 찾아 맨 앞의 값과 위치를 바꿔가며 정렬 - 1 Cycle을 수행하고 나면 가장 작은 값의 데이터가 맨 앞에 오게 됨 - 구현이 간단 - 시간 복잡도 : O(n^2) 선택정렬(Selection Sort) 과정 정렬해야할 n개의 데이터가 주어졌을 때 최초 모든 데이터에 대해 최소값을 찾아 맨 앞의 인덱스에 위치 시킨다. 한 사이클이 돌아갔을 때, 가장 작은 값이 맨 앞의 인덱스에 위치된 것을 알 수 있다. 다시 두번째 인덱스부터 시작해 가장 작은 값을 찾아 두번째 인덱스에 위치시킨다. 이러한 과정을 n번째 인덱스까지 반복하면 정렬할 수 있다. 소스코드 package algorith.. 2020. 7. 13.
[컴퓨터구조] 어셈블리어와 고급언어 컴퓨터 언어의 번역 과정 - C 나 Java로 작성된 언어는 기계언어로 번역되기 까지 위와 같은 번역과정을 거침 1) 기계어 - 기계어는 컴퓨터가 이해할 수 있는 언어 - 0과 1로 이루어져있음 - 사람이 이해하기 어렵기 때문에 어셈블리어를 사용해 기계어를 처리 2) 어셈블리어 - 어셈블리어는 0과 1로 이루어진 기계어와 매핑된 심볼 언어 - 어셈블리어는 어셈블러를 통해 기계어로 번역 - add, mult, jump와 같은 기본적인 연산으로 이루어져 있으며, 컴퓨터 구조에 의존적(ex, MIPS) - 따라서 어셈블리어를 사용하는 프로그래머는 컴퓨터 구조와 프로그래머 모델을 이해를 필요가 있음 3) 고급 언어 - C 나 Java는 고급언어 - 어셈블리어와 다르게 컴퓨터 구조에 독립적 - 따라서 고급 언어를.. 2020. 7. 12.
[컴퓨터구조] 폰노이만 구조와 하버드 구조 폰노이만 구조 - 폰 노이만 구조는 현대 컴퓨터 구조의 기반이 된 구조로 입출력장치, 메모리, CPU로 컴퓨터 구조를 설명 1) 구성 요소 (1) CPU - 명령어 사이클을 통해 메모리에서 다음 실행할 명령어를 읽어오고 실행하는 단계를 반복 - 각 명령어에 해당하는 제어신호를 생성하고, 산술/논리 연산 실행 (2) 메모리 - 저장장치에 저장된 프로그램이 실행상태가 되어 메모리에 적재 - 데이터와 프로그램이 저장 (3) 입출력장치 - 사용자로부터 입력을 받고 실행결과 또는 메모리에 저장된 데이터를 출력 2) 장점 - 컴퓨터에 다른 작업을 실행할 때, 하드웨어의 재배치없이 소프트웨어만 교체하면 되므로 범용성이 확장 3) 단점 - 프로그램과 데이터는 같은 메모리에 저장되고 같은 버스를 통해 전달되는데, 파이프.. 2020. 7. 12.
[자바] 인터페이스(Interface)와 추상클래스(Abstract Class) 인터페이스와 추상클래스 1) 공통점 - 인스턴스를 생성할 수 없음 - 선언만 되어있고 구현이 되어있지 않음 - 하위 클래스에 메소드의 구체적인 내용을 구현해야 함 2) 차이점 (1) 인터페이스(Interface) - 서로 관련없는 클래스에 공통적으로 사용되는 기능이 필요하지만, 내부 로직은 각각 구현해야할 때 - 다중 상속 가능 - implements 키워드로 상속 - 협업 시에 기술 명세서로 사용 (2) 추상클래스(Abstract Class) - 추상 메소드를 하위메소드가 구체화해 그 기능을 확장하는데 목적 - 단일 상속만 가능 - extends 키워드로 상속 2020. 6. 29.
[자바] 상속(Inheritance) 상속(Inheritance) - 상위 클래스의 모든 멤버와 메소드를 하위 클래스가 물려받는 것 - private 멤버를 제외한 상위 클래스의 모든 멤버는 상속가능 - 재사용성과 코드의 간결성을 향상 - 최상위 클래스는 java.lang.Object - 개발자가 만든 클래스를 상속할 수 있고, JDK에서 지원하는 클래스를 상속할 수 있음 - 상속의 종류는 단일상속과 다중상속이 있으나, 자바는 다중상속을 지원하지 않음 - 다중 상속을 하고 싶으면 Hasing 관계를 이용해야 함 - extends 키워드를 이용해 상속 2020. 6. 29.
[자바] 클래스 / 객체 / 인스턴스 클래스(Class) - 객체를 만들어내기 위한 설계도 또는 틀 - 연관되어 있는 변수와 메소드의 집합 객체(Object) - 클래스로 구현한 모든 대상 - 클래스의 인스턴스 - 인스턴스의 포괄적 개념 - 클래스의 타입으로 선언되었을 때, 객체라고 말함 인스턴스(Instance) - 객체에 포함되는 개념 - 객체가 메모리에 할당되어 실제 사용될 때, 인스턴스라고 말함 클래스와 객체 - 클래스는 설계도 - 객체는 설계도로 구현한 모든 대상 객체와 인스턴스 - 클래스 타입으로 선언되었을 때를 객체라고 말함 - 객체가 메모리에 할당되어 실제 사용될 때를 인스턴스라고 말함 2020. 6. 29.
[자바] Static Static 변수 - 클래스 멤버 - 동일한 클래스의 모든 객체가 공유하는 변수 - 클래스 당 하나가 생성 - 객체가 생성되기 이전 클래스 로딩 시에 생성 Non static 변수와 Static 변수 Non-static 멤버 (인스턴스 멤버) Static 멤버 (클래스 멤버) 공간적 특성 멤버는 객체마다 별도로 존재 멤버는 클래스 당 하나가 생성 시간적 특성 객체 생성시에 멤버가 생성 클래스 로딩 시에 멤버가 생성 공유의 특성 객체 간 공유하지 않음 동일한 클래스의 모든 객체가 공유 2020. 6. 29.
[자바] 데이터타입 기본 데이터 타입(Primitive Data Type) - 크기가 작고 고정적이기 때문에 Stack 영역에 저장 1) 정수형 - byte, short, int, long 2) 실수형 - float, double 3) 논리형 - boolean 4) 문자형 - char 참조형 데이터 타입(Reference Data Type) - Interface, 배열, 클래스 등 기본형을 제외한 모든 데이터 타입 - new 키워드를 이용해 객체를 생성하고 데이터가 생성된 주소를 참조 - 즉, 참조 타입은 값이 저장된 곳의 주소를 저장하는 공간으로 객체의 주소를 저장 - String은 new 키워드 이외에 리터럴로 선언가능하지만 참조형 데이터 타입 - 크기가 가변적이기 때문에 Heap 영역에 저장 - GC에 의해 제거되는 대상 2020. 6. 29.