1. Stack 정의 : stack은 로컬 변수, 함수 매개변수, 반환 주소를 저장하는 메모리 영역으로, 함수 호출 관리를 수행한다. 관리 : stack은 시스템에 의해 자동으로 관리된다. 함수가 호출되면 해당 함수의 로컬 변수, 반환 주소 및 일부 관리 정보가 stack에 push된다. 함수가 반환되면 해당 정보가 stack에서 pop된다. LIFO 구조 : stack은 Last-In-First-Out (LIFO) 방식으로 작동한다. 이는 stack에 마지막으로 push 된 변수가 제일 먼저 제거된다는 의미다. 크기 : stack에는 프로그램 시작 시 설정된 제한된 크기가 있다. 사용 가능한 스택 공가보다 더 많은 공간을 사용하면 (예를 들어, 무한 재귀로 인한) stack overflow가 발생하며 ..
Pointer (포인터)는 다른 변수의 메모리 주소를 보유하는 변수로 * 기호를 사용해 선언한다. // 선언 int *p; // int에 대한 포인터 p // 초기화 및 역참조 int x = 10; *p = &x; // p가 x의 주소를 보유 int value = *p; // value 변수는 *p를 역참조해 이제 10 이라는 값을 보유 // 재할당 int y = 20; p = &y; // p는 이제 y를 가리킴 // Null 포인터 int *q = nullptr; Reference (참조)는 이미 존재하는 변수에 대한 별칭(alias) 또는 다른 이름이다. 포인터처럼 별도의 메모리 주소는 없지만, 참조하는 변수의 주소를 공유한다. &를 사용해 선언하지만 포인터와는 다른 의미를 갖는다. // 선언 int..
Viterbi Algorithm은 특히 Markov information sources (마르코프 정보 소스) 및 Hidden Markov Model (HMM, 은닉 마르코프 모델)의 맥락에서 관찰된 사건의 연속으로 나타나는 가장 가능성이 높은 숨겨진 상태의 연속성 - Viterbi path 라고도 함 - 을 찾는 데 사용되는동적 프로그래밍 (Dynamic programming) 알고리즘이다. 이 알고리즘은 Andrew Vitervi가 통신에 사용되는 Convolutional Codes (컨볼루션 코드, 합성 부호) 를 디코딩하기 위한 방법으로 도입했다. 이후 sequence alignment (서열 정렬)을 위한 Bioinformatics (생물정보학), 음성 인식 등 다양한 분야에 적용됐다. 아래는 ..
HMM은 시간에 따른 시스템을 나타내는 통계 모델이다. 상태를 직접 관찰할 수 없기 때문에 "hidden" 이라고 불리며, 대신 이러한 은닉 상태에 대한 정보를 제공하는 순서 (sequence)를 관찰한다. HMM은 일반적으로 음성 인식, 자연어 처리, 생물 정보학 (bioinformatics에서 단백질 2차 구조 예측 등)과 같은 다양한 곳에 사용된다. HMM의 주 구성 요소는 아래와 같다. States (상태) : 이는 모델의 "hidden" 부분이다. states는 무엇이든 나타낼 수 있지만 직접 관찰하지는 않는다. 대신 관찰한 데이터에서 state를 추론한다. 예를 들어, 음성 인식 시스템에서 states는 phoenemes (한 언어의 음성체계에서 단어의 의미를 구별 짓는 최소의 소리 단위)에 ..
NLP에서 Data Cleaning은 중요한 preprocessing (전처리 단계) 로 아래와 같은 이유로 필요하다. Noise Reduction (노이즈 감소) : raw 테스트 데이터는 종종 많은 'noise'를 포함하고 있다. 여기에는 관련 없는 문자, HTML 태그, URL 또는 기타 필수적이지 않은 정보가 포함된다. cleaning은 이러한 noise를 제거해 알고리즘이 관련 기능에만 집중할 수 있도록 도와준다. Standarization (표준화) : 텍스트 데이터는 다양한 소스에서 가져올 수 있으면 대소문자 형식, 다양한 날짜 형식 또는 대체 철자법 등 불이치가 있을 수 있다. 텍스트를 cleaning하고 standaizing하면 동일한 용어나 문구가 균일하게 표현돼 모델의 정확도가 향상된..
TF-IDF (Term Frequency-Inverse Document Frequency)는 information retrieval (정보 검색) 및 text mining (텍스트 마이닝)에 사용되는 수치 통계로, 문서 모음 (일반적으로 corpus, 말뭉치)과 관련해 문서 내 용어(단어 또는 구문)의 중요성을 나타낸다. TF-IDF 벡터화는 텍스트 문서 모음을 해당 용어의 TF-IDF 점수를 기반으로 숫자 벡터로 변환하는 데 사용되는 기법이다. NLP 및 text analysis에 널리 사용된다. TF-IDF에 대해 하나하나 알아보자. TF (Term Frequency, 용어 빈도) : Term Frequency는 문서에서 용어가 얼마나 자주 나타나는지를 측정한다. 이는 문서에서 용어가 나타나는 횟수를..
Multinomial Naive Bayes는 classification tasks, 특히 NLP 및 text analysis에 널리 사용되는 머신 러닝 알고리즘이다. 이는 Bayes' theorem과 조건부 독립 가정의 특성에 기반한 Naive Bayes 알고리즘의 확장판이다. Multinomial Naive Bayes의 원리는 아래와 같다. Bayes' Theorem : 이 알고리즘의 핵심은 이벤트와 관련이 있을 수 있는 조건에 대한 사전 지식을 바탕으로 특정 이벤트가 발생할 확률을 계산하는 Bayes' Theorem에 의존한다. classification의 맥락에서 이 알고리즘은 주어진 입력이 특정 클래스에 속할 확률을 계산하는 데 도움이 된다. Multinomial Distribution (다항 분..
소프트웨어 엔지니어 인터뷰에서 예상되는 간략한 질문들에 대해 정리해봤다. Object-Oriented Principles (객체 지향 원칙) Encapsulation (캡슐화) : 데이터(속성)와 데이터에서 작동하는 메서드(함수)를 단일 단위 또는 클래스로 묶는 것을 의미한다. 예를 들어, BankAccount 클래스는 balance와 같은 속성과 deposit(), withdraw() 같은 메서드를 캡슐화할 수 있다. Polymorphism (다형성) : 서로 다른 클래스의 객체를 공통 상위 클래스의 객체로 취급할 수 있다. 예를 들어, 부모 클래스 Shape와 자식 클래스 Circle 및 Rectancle이 있는 경우 다형성을 사용하면 모든 도형 유형에 대해 draw()와 같은 단일 인터페이스를 사용..
Model-View-Controller (모델-뷰-컨트롤러) 의 약자인 MVC 패턴은 애플리케이션을 상호 연결된 세 가지 구성 요소로 분리하는 것을 목표로 하는 소프트웨어 개발에서 사용되는 디자인 패턴이다. Model (모델) : 애플리케이션의 데이터와 비즈니스 규칙을 나타내고, 시스템의 "두뇌"라고 생각하면 된다. 데이터베이스와 통신하고 데이터가 변경될 때마다 View를 업데이트 한다. View (뷰) : user와 상호 작용하는 부분으로 애플리케이션의 UI를 의미한다. 시스템의 "얼굴"이라고 생각하면 된다. Model에서 전송하는 데이터를 user에게 표시하고, user의 명령을 Controller로 전송한다. Controller (컨트롤러) : Model과 View 사이의 인터페이스다. user의 ..
Singly Linked List 구현은 매우 간단하고, 자주 사용하게 되므로 알아두는 것이 좋다. # Singly Linked List class 정의 class Node: def __init__(self, val): self.val = val self.next = None # '0'이라는 데이터를 담은 head와 cursor 선언 cur = head = Node(0) # '1'이라는 데이터를 담은 새로운 Node 선언해 head의 다음으로 연결 new = Node(1) cur.next = new cur = new # head부터 출력하면 0, 1을 출력으로 확인 가능 test = head while test: print(test.val) test = test.next
- Total
- Today
- Yesterday
- join
- machine learning
- I2C
- defaultdict
- 파이썬
- socket programming
- Hash Map
- DICTIONARY
- leetcode
- The Economist Espresso
- 머신 러닝
- 리트코드
- vertex shader
- 오블완
- min heap
- java
- Android
- 투 포인터
- The Economist
- Python
- 티스토리챌린지
- 이코노미스트
- ml
- 딕셔너리
- 안드로이드
- tf-idf
- Computer Graphics
- C++
- 이코노미스트 에스프레소
- 소켓 프로그래밍
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |