Computer Science 41

[컴퓨터 구조] CPU의 구조와 기능 2

클록(Clock) : CPU를 비롯한 컴퓨터의 모든 부품이 일정한 속도로 작동하기 위한 전기적 진동(Pulse) 클록 발생기가 클록을 만들며, 클록 수가 클수록 컴퓨터의 처리 속도가 빠름 클록 주파수(Hz 단위) : 1초에 클록이 몇 번 발생하는 지를 의미한다. 1초에 1번 클록이 발생하면 클록 주파수는 1Hz 1초에 10^9번 클록이 발생하면 클록 주파수는 1GHz 클록 주기 : 한 신호 뒤에서 다음 신호가 올 때까지의 간격 마이크로 연산 : CPU 클록의 각 주기 동안 수행되는 기본 단위 동작 명령어 인출 사이클 목표 : 명령 레지스터(IR)에 명령어를 꺼내와 적재 하는 것이 목표 인출 사이클의 마이크로 연산 T0 = MAR ← PC PC가 지정하는 명령어의 주소가 CPU 내부 버스를 통해 MAR로 ..

[컴퓨터 구조] CPU의 구조와 기능 1

CPU의 수행하는 세부적 동작들 명령어 인출(IF) : 기억장치로부터 명령어를 읽음 명령어 해독(ID) : 수행해야 할 동작을 결정하기 위해 명령어를 해독 → 명령어 인출과 해독은 모든 명령어들에 대해 공통적으로 수행 데이터 인출(DF) : 명령어 실행을 위해 데이터가 필요한 경우, 기억장치 || I/O장치(키보드)로부터 그 데이터를 읽음 데이터 처리(DP) : 데이터에 대한 산술적 혹은 논리적 연산을 수행 데이터 저장(DS) : 수행한 결과를 저장 → 데이터 인출, 처리, 저장은 필요한 경우에만 수행 명령어를 인출 했는데, 오퍼랜드가 데이터 주소가 아닌 데이터라면 데이터 인출 과정 필요 X ++ 순서 변경할 때도 데이터 인출 필요 X CPU 기본 구조 산술논리연산장치 (ALU)산술 연산 : 사칙연산 등..

[컴퓨터 구조] 컴퓨터 시스템 개요 2

컴퓨터 정보 : 2진수 비트들로 표현된 프로그램 코드(기계어, 어셈블리어, 고급언어)와 데이터 프로그램 언어의 번역 과정 고급 언어 → 어셈블리어 → 기계어 순으로 변환 어셈블리어와 기계어는 1대1 대응 Z = X + Y LOAD A, X : 기억장치 X번지 주소의 내용을 읽어, 레지스터 A에 적재하라 ADD A, Y : 기억장치 Y번지 주소의 내용을 읽어, 레지스터 A에 적재된 값과 더하고 결과를 A에 다시 적재하라 STOR Z, A : 그 값을 기억장치 Z번지 주소에 저장하라 (store) 어셈블러 어셈블리 프로그램을 기계어로 번역하는 SW 니모닉스 : 어셈블리 명령어가 지정하는 연산을 가리키는 알파벳 기호 ex) LOAD == 001, ADD == 010, STOR == 011.. 기계어 형식 오퍼..

[컴퓨터 구조] 컴퓨터 시스템 개요 1

컴퓨터 시스템 개요 1 컴퓨터 기본구조 하드웨어 : 컴퓨터에서 각종 정보의 전송 통로를 제공해 주고, 정보에 대한 처리가 실제 일어나게 해주는 물리적인 실체 소프트웨어 : 정보들이 이동하는 방향과 정보 처리의 종류를 지정해주고, 그러한 동작들이 일어나는 시간을 지정해주는 명령(Command)들의 집합 CPU : 컴퓨터의 특성을 결정하며, 컴퓨터의 핵심 기능인 프로그램 실행과 데이터 처리를 담당함 특징 ‘프로세서’ 또는 ‘마이크로 프로세서’라고도 부름 산술 논리 연산 장치(ALU) : 산술, 논리, 보수, 시프트 연산을 수행하는 공간 제어장치(CU) : 명령어를 해독하여 명령어 실행에 필요한 제어 신호를 발생 시키고, 컴퓨터의 모든 장치를 제어 레지스터(register) : CPU 내부의 임시기억장치로, ..

[백준] 2644, 촌수계산(C++, BFS)

BFS 기초 문제 풀어보기 https://www.acmicpc.net/problem/2644 2644번: 촌수계산 사람들은 1, 2, 3, …, n (1 ≤ n ≤ 100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어 www.acmicpc.net 2644번 : 촌수계산 * 입출력 예시 // 입력 9 7 3 7 1 2 1 3 2 7 2 8 2 9 4 5 4 6 // 출력 3 8과 6일땐 ? => 8에서 6을 못 감 => -1 출력 #include #include #include #include #include #include #include using namespace std; #define M..

[백준] 13414, 수강신청 (C++, 해시맵)

https://www.acmicpc.net/problem/13414 13414번: 수강신청 입력 데이터는 표준 입력을 사용한다. 입력은 1개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 과목의 수강 가능 인원 K(1 ≤ K ≤ 100,000)와 학생들이 버튼을 클릭한 순서를 기록한 대기목 www.acmicpc.net 이번 주 스터디는 내 차례가 되어 조금 더 깊게 이 문제에 대해 공부해봤고, 이 문제를 풀어봄으로써 C++의 STL에 대해 조금 더 알게되었다. #include #include #include #include #include using namespace std; // sort, unordered_map(해시맵), pair, auto, iterator bool compare(const ..

그래프 응용(최소신장트리), Prim 알고리즘 C언어 구현

지난 시간에 그래프의 기초 개념을 다루었으니 그래프 응용 시간을 가져보겠다. 이번 시간에 할 건 그래프의 최소비용 신장트리의 구성이다. 그전에 우리는 무방향 그래프만 다룰 것이고, 시작에 앞서 용어를 몇 개 짚고 가자 가중치 그래프 : 정점을 잇는 간선에 값이 부여된 그래프이다. 인접행렬을 보면 0과 0이상의 값, 무한대로 3가지의 값의 표현이 있다. 0 : 자기 자신을 가리키는 간선이 없으니 0 0 이상의 값 : 가중치, weight라고 부른다. 무한대 : this 정점에서 해당 정점까지 한 번에 가지 못한다는 걸 의미한다. 지난 시간에는 정점이 간선으로 연결되어 있다는 사실로, 인접행렬을 0과 1로 표현했지만 이제는 간선에 값이 주어지기에 1이 아닌, 그 값을 인접행렬에 넣는다. 신장트리(Spanni..

그래프(Graph)의 개념과 C언어로 구현

그래프란 ? : 정점(Vertex)과 그 정점을 잇는 간선(edge)으로 구성되어 있는 자료구조 무방향 그래프 : 간선의 방향이 없는 그래프 방향 그래프 : 간선의 방향이 있는 그래프 그래프를 표현하는 두 가지 방법 1. 인접행렬 2. 인접리스트 인접행렬 표현법 (무방향과 방향 그래프) 무방향 그래프를 인접행렬로 표현하면 대칭적인 형태를 볼 수 있다. 인접행렬을 작성하는 코드는 다음과 같다. // 그래프의 인접행렬 생성 함수 void createGraph(int arr[][MAX_SIZE], int vertex, int edge) { int start, destination; // 인접행렬 초기화 for (int i = 0; i < vertex; i++) { for (int j = 0; j < verte..

[백준] 2579번, 계단 오르기 (Java/자바) 동적 계획법 실습

동적 계획법을 지난 시간에 배웠으니, 그에 맞는 문제를 풀어보려 한다. 백준의 실버3 난이도 DP 알고리즘을 쓰는 '2579번 : 계단 오르기' 문제이다. 문제 규칙 이 문제에서는 규칙을 문제 설명에 명시해 두었다. 계단은 한 번에 한 계단씩 또는 두 계단씩 오를 수 있다. 즉, 한 계단을 밟으면서 이어서 다음 계단이나, 다음다음 계단으로 오를 수 있다. 연속된 세 개의 계단을 모두 밟아서는 안 된다. 단, 시작점은 계단에 포함되지 않는다. 마지막 도착 계단은 반드시 밟아야 한다. 동작 원리의 핵심은 2번에 있다. 세 개의 계단을 연속되게 밟으면 안 되고, 한 번에 세 칸 이상씩은 이동할 수 없다는 점이다. 백준에 나와있는 입력 예제이다. 첫 번째 int 변수 n에 계단 개수를 받아주고 계단의 값을 담아..