전체 글 211

2-1. 배열과 구조

포인터 해석 int *list1; int list2[5]; list2 &list2[0] list2 + i &list2[i] (list2 + i) &list2[i] *(list2 + i) list2[i] if(i == 2) list2[i] a+2*sizeof(int) list2[2] → a+2*4 // a : 임의의 주소 값 역참조 list[i] "=" 기호 우측 : (list + i)가 가리키는 값 "=" 기호 좌측 : 값을 (list+i)에 저장 일차원 배열의 주소 계산 prt+i → 주소 *(prt + i) → 가리키는 값 void print1(int *prt, int rows){ int i; for(i=0; i

학교/자료구조 2021.09.27

1. 기본개념

포인터 & : 주소 연산자 * : 간접지시 연산자 int i, j, *pi, *pj; i = 20; pi = &i; j = *pi; *pi = 10; pj = &j; *pi = *pj; value address i 20 10 20 3000 j 20 3004 pi 3000 3008 pj 3004 30012 동적 메모리 할당 (heap 기법) malloc 필요한 양의 공간을 요구하는 함수 사용할 경우 : 메모리 영역의 시작 주소 반환 사용하지 않을 경우 : Null 포인터 반환 + free() 함수 : 영역을 시스템에 반환 int i, *pi; float f, *pf; i = 1024; pi = (int *)malloc(sizeof(int)); *pi = i; f = 3.14; pf = (float *)ma..

학교/자료구조 2021.09.27

[OS] 1. 운영체제 개요

운영체제 응용과 컴퓨터 하드웨어 사이에 위치하는 레이어 운영체제 역할 프로그램의 구동 및 운영을 쉽게 할 수 있도록 함 프로그램들이 자원을 공유할 수 있도록 함 프로그램들이 디바이스와 interaction을 할 수 있도록 함 운영체제와 하드웨어 CPU : 입력된 데이터를 가지고 code (혹은 프로그램) 실행 Memory : 디스크로부터/에 코드와 데이터 읽기/쓰기 작업 수행 Disk(Storage) : 코드와 데이터를 반영구적으로 저장 위 협업에 운영체제가 직접 관여 운영체제 설계 목표 추상화 (Abstraction) 시스템을 사용 및 관리하기 쉽도록 함 성능 최적화 (Performance) - 효율성(Efficiency) 제한된 자원하에서 최선의 성능 도출 - 공정성 (Fairness) 특정 프로그램..

학교/운영체제 2021.09.01

LDA(Latent Dirichlet Allocation

토픽 모델링(Topic Modeling) 문서의 집합에서 토픽(주제)을 찾아내는 프로세스 LDA(Latent Dirichlet Allocation) 잠재 디리클레 할당 토픽 모델링 기법의 대표적인 알고리즘 토픽별 단어의 분포, 문서별 토픽의 분포를 추정하는 확률적 모형 LDA는 문서들은 토픽들의 혼합으로 구성되어 있으며, 토픽들은 확률분포에 기반해 단어들을 생성한다고 가정한다. 위의 사진을 보면 문서에 담긴 텍스트들의 키워드를 하나씩 뽑아 토픽별로 인덱싱하여 분류하고, 특정 토픽에 특정 단어가 나타날 확률을 보여준다. 문서를 보면 노란색 토픽에 해당하는 단어들이 많기 때문에 위 문서의 메인 주제는 노란색 토픽일 가능성이 크다. 노란색 토픽에선 'gene'이라는 단어가 등장할 확률이 제일 높기 때문에 '유..

학교/졸프 2021.08.19

Doc2Vec

Word2Vec이 확장된 임베딩 방법 구글에서 발표한 문서를 vector로 변경하는 document embedding 모델 Doc2Vec에선 paragraph id(document id)를 하나의 단어(paragraph token)처럼 사용해 문서를 훈련 데이터로 사용 Doc2Vec은 document id와 각 문서, 문장에 등장했던 단어들이 서로 가까워지도록 document vector를 움직인다. 단어가 다르더라도 단어의 벡터들이 비슷하다보니 각 문장의 document vectors가 비슷해진다. v(cat) ≃≃ v(dog), v(table) ≃≃ v(board) 이기 때문에 v(‘a little cat sit on table’) ≃≃ v(‘a little dog sit on board’) 가 된다..

학교/졸프 2021.08.17

[GitHub] Repository 병합

1. 병합하기 위한 repository 만들기 2. git bash 켜기 3. git clone [병합하려는 repository 주소] 4. 해당 폴더로 이동 cd [repository 이름] 5. 병합하려는 repository의 파일들 fetch mkdir [병합하려는 repository 이름] git subtree add --prefix=[병합하려는 repo 이름]/[병합하려는 repo 이름] [병합하려는 repo 주소] 만약 위에서 오류 발생시 다른 방식 사용 git remote add [remote 이름] [병합할 repository 주소] git fetch [remote 이름] # 위의 명령어 수행시 나옴 : * [new branch] 브랜치명 -> 레파지토리이름/브랜치명 git merge [위..

학교 2021.08.07

[STL] Queue

* FIFO 구조 생각하면서 보기 멤버함수 q.push(element) 큐에 원소 추가 q.pop() 큐에 있는 원소 삭제 q.front() 큐 제일 앞에 있는 원소 반환 q.back() 큐 제일 뒤에 있는 원소 반환 q.empty() 큐가 비었으면 true, 아니면 false 반환 q.size() 큐 길이 반환 +++ 큐가 비었을때 pop() 사용지 에러 발생 큐가 비었을 때 front() 사용시 지정하지 않은 행동 함 -> 꼭 비었는지 확인하고 사용 참고한 URL https://hamait.tistory.com/13 https://twpower.github.io/76-how-to-use-queue-in-cpp https://dpdpwl.tistory.com/67

리터럴 접미사

리터럴(Literal) 상수 코드에 직접 삽입된 값 변경할 수 없기 때문에 상수이다. 정수 리터럴 접미사 자료형 접미사 int 없음 unsigned int u, U long l, L unsigned long ul, UL long long ll, LL unsigned long long ull, ULL 사용 예 # 프로그래머스 1주차 문제중에서 # 1LL = (long long)1 long long solution(int price, int money, int count) { long long required = 1LL * price * count * (count + 1) / 2; } 실수 리터럴 접미사 자료형 접미사 float f, F double 없음 long double l, L 참고 URL https..

selenium 네이버 뉴스 크롤링

구현환경 : python, vscode 클롤링 할 사이트 : https://news.naver.com/main/history/mainnews/list.nhn 1. selenium 설치 terminal에 입력 pip install selenium​ 2. 사용할 브라우저 드라이버 다운로드 우측 상단의 다음과 같은 버튼 클릭 > 도움말 > 크롬 정보 에서 자신의 크롬 버전 확인해 맞는 버전 설치 chrome : https://sites.google.com/a/chromium.org/chromedriver/downloads Firefox : https://github.com/mozilla/geckodriver/releases Edge : https://developer.microsoft.com/en-us/mic..

학교/졸프 2021.06.29