분류 전체보기 72

[C++] KMP 알고리즘

KMP 알고리즘이란 ? 최대 접두부를 구현하여 불일치를 감지할 때마다 이전의 일치 문자열로 돌아가 점프하는 방식으로 시간 복잡도는 최악의 경우 O(N) : 문자열 길이 * 패턴 길이 [ 구성 요소 ] lps[] : 패턴 문자열에서 접두사와 접미사가 일치하는 최대길이 저장 pattern[] : 패턴 문자열 text[] : 주어진 문자열 KMP 알고리즘 함수 구현하기 예시 문자열 ) ABAABAB i 문자열 lps[i] 0 A 0 1 AB 0 2 ABA 1 3 ABAA 1 4 ABAAB 2 5 ABAABA 3 6 ABAABAB 2 => lps에 최대길이인 3이 들어감 lps 구현 코드​ void lps_array(string pattern, int M, int lps[]) { int len = 0; //접두..

Algorithm 2022.05.24

Internal Memory

[ 요약 ] Semiconductor Main Memory : RAM / ROM / Flash memory RAM - Volatile(전원이 공급되지 않으면 data lost) 종류 : DRAM(dynamic)과 SRAM(static) ROM - Nonvolatile 종류 : ROM, PROM, EPROM, EEPROM Flash memory - Nonvolatile Dynamic RAM (DRAM) DRAM은 capacitors에 저장되는데 capacitor은 charged/discharged의 electronic charge를 이용하므로 leak가 발생된다. 이는 data의 loss로 이어지므로 이를 대처하기 위해 전원에 연결되었을때도 포함해서 refreshing해주는 refresh circuits가..

CS/컴퓨터구조 2022.04.22

External Memory

Magnetic Disk 자성의 물질로 만든 disk로 예전에는 알루미늄을 이용했으나 현대에는 유리를 이용하고 있다. -> 신뢰성을 높임, read/write에러를 줄여줌, 짧은 간극이 생김, 더 단단하고 충격/데미지에 내구성이 있음 왼쪽 사진에서처럼 여러층의 disk가 층층이 존재하고 ARM(초록색 원)이 회전하면서 disk를 읽/쓰고 끝에 head가 달려있다. 쓰는 방법은 자성에 차이를 주면서 쓰게 된다. 여러층의 disk의 사이사이에는 gap이 존재하는데 이 gap은 눈으로는 볼 수 없을만큼 아주 미세하다. (미세먼지 보다 작다) 이 gap의 존재 이유는 disk 간에 간극을 주어 track간의 정보 간섭이 없도록 하기 위함이다. 원판 모양의 disk 모습이다. 한 줄을 track이라고 하며 tra..

CS/컴퓨터구조 2022.04.21

Machine Learning Basic

** 출처 : boostcourse 텐서플로우로 시작하는 딥러닝 기초 링크 -> https://www.boostcourse.org/ai212/joinLectures/25072 지도 학습 (Supervised Learning) labeled된 데이터를 학습함 training data set이 필요함 비지도학습 (Unsupervised Learning) un-labeled data, 데이터를 가지고 스스로 학습함 Linear Regression Linear Regression? parameter을 선형 결합식(1차식)으로 표현 가능한 모델 n차식으로 결합된 식도 선형이 될 수 있다? x의 차수가 중요한것이 아니라 파라미터 끼리의 결합이 선형인지가 중요하다 피처 종류 개수에 따라 한개이면 단순 선형 회귀, 여..

카테고리 없음 2022.03.29

Chapter 1 ) Basic Concepts and Computer Evolution

■교재 : Computer Organization and Architecture, 10th Edition, W. Stallings, Pearson, 2016 **이 포스팅은 컴퓨터구조 과목의 정리본이다. IAS von Neumann Architecture data & instructions 같은 single memory를 사용한다. memory content들은 위치로 addressable하다. sequential execution Memory of IAS words == 1000 storage of locations 각 word = 40 bits이고, instruction pair(left instruction, right instruction)을 가진다. 각 instruction들은 8bit의 opc..

CS/컴퓨터구조 2022.03.23

[C++] 5576번 콘테스트

각각 10개의 입력으로 정해져 있으므로 크기 10짜리 배열 2개를 만들어 입력을 받아주고 sort함수를 이용하여 내림차순으로 정렬을 해주었다. 높은 점수 순으로 3명의 점수만 합산되므로 3번째까지의 점수를 각각 더해주어서 출력해주었다. #include #include #define sync ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); using namespace std; void Contest(){ int W[10], K[10]; int W_score = 0; int K_score = 0; for(int i=0; i> inp; W[i] = inp; } sort(W, W+10, greater()); for(int i=0; i> inp; K[i]..

[Sorting] Quick Sort (퀵 정렬)

원리 퀵정렬은 Divide & Conquer algorithm중 하나로 "pivot"이라는 기준값을 지정하여 pivot을 기점으로 배열을 partitioning하여 정렬하는 알고리즘이다. 보통 pivot은 배열의 맨 앞 원소를 지정하는데 두번째 원소부터 오른쪽으로 pivot보다 큰값을 찾고, 맨 마지막 원소부터 왼쪽으로 pivot보다 작은 값을 찾아나간다. 만약 왼쪽으로 훑던 것이 오른쪽을 추월한다면 pivot과 오른쪽 기준을 swap하고 그렇지 않다면 왼쪽 오른쪽 값을 swap한다. Complexity 모든 원소를 한번씩 훑기때문에 O(n), 배열을 반으로 계속 divide하기 때문에 O(log2n)으로 총 O(nlogn)이라는 빠른 속도를 가진다. 주의사항 - Worst Case ! 배열이 이미 정렬..

Algorithm 2022.03.22

switch case문 jump to case label 오류

이번에 코드에 switch문을 쓰다가 더보기 error: cannot jump from switch statement to this case label 이런 에러를 마주하였다. 처음 보는 오류라 구글링을 해본 결과 간단한 문법 오류로 블럭 {} 으로 감싸주면 해결됨을 알아냈다. 그렇다면 왜 이런 오류가 나는걸까? 제어 전달은 변수의 범위를 입력할 수 없으므로, 명령문 내에서 선언문이 나타나면 자체 선언문에서 범위를 지정해주어야한다고 한다. 즉, 변수 x를 case문에서 선언했을때 case문에서의 범위를 지정해주어야 error발생 없이 넘어갈 수 있다. ∴ 결론 : case문에서 변수 사용시 블럭으로 범위를 구분지어주어야 한다. https://blankspace-dev.tistory.com/386 (참고 ..

CS/C++ 2021.11.20
728x90