개발 이야기
-
[C 언어 기초 정리 04] Array, 문자열개발 이야기/C 2023. 9. 23. 00:23
배열과 문자열은 메모리와 함께 연관하여 알아두면 좋고, 이후에 나오는 포인터 개념과도 연관된다. 배열의 경우에도 다양한 프로그래밍 언어에서 차이는 있지만 대다수 공통된 특징을 가지기에(0부터 시작한다던가, 기타 문법이나) 여기서도 간단히 문법적인 부분만 짚고 넘어가려고 한다. 1차원 배열 C언어에서는 배열을 선언만 하고 초기화하지 않으면, 각 배열 요소에 아무런 의미를 가지지 않는 쓰레기값이 저장되어 있게 되기에 사용에 유의해야한다, int array[3] //배열의 크기가 3 array[0]=1 array[1]=2 array[2]=3 //선언과 동시에 초기화 하기 int array[3] = {1,2,3} //sizeof->배열의 길이를 반환하는 것이 아닌 메모리의 크기를 반환 //len을 알려면 하나의..
-
[C 언어 기초 정리 03] if, else, for, while개발 이야기/C 2023. 9. 22. 17:42
C 프로그램은 절차적 프로그램(procedural program) 또는 명령형 프로그램(Imperative program)에 속한다. 즉, C 프로그램의 명령문은 처음부터 끝까지 순서대로 실행됩니다. 이런 명령문들은 모든 프로그래밍 언어에서 거의 공통적인 이름과 역할을 수행하기에 그 문법에 관해서만 간단히 짚고 넘어가려고 한다. 조건문 IF int num = 3; if (num < 5) { printf("입력하신 수는 5보다 작습니다.\n"); } if-else if (조건식) { 조건식의 결과가 참일 때 실행하고자 하는 명령문; } else { 조건식의 결과가 거짓일 때 실행하고자 하는 명령문; } if-else if- if int num = 7; if (num < 5) { printf("입력하신 수는..
-
[C 언어 기초 정리 02] 변수&상수, 타입, 선행처리문개발 이야기/C 2023. 9. 22. 00:09
타입 C언어는 여러 형태의 타입을 미리 작성하여 제공하고 있는데, 크게 정수형, 실수형, 그리고 문자형 타입으로 나눌 수 있다. 타입 할당되는 메모리 크기 예시(코드) 정수형 short 2byte short a = 10 int 4byte int a = 10 long 4byted int a = 1000 실수형 float 4byte float a = 1.12(6자리) double 8byte double a = 1.244(15자리) char 1byte char a = 'a' typecast를 통해서 명시적으로 타입변환이 가능하다. 변수(Variable) 변수(variable)란 데이터(data)를 저장하기 위해 프로그램에 의해 이름을 할당받은 메모리 공간을 의미한다. 변수는 기본적으로 메모리의 주소(addre..
-
[C 언어 기초 정리 01] C 프로그래밍 & 입출력개발 이야기/C 2023. 9. 20. 22:48
사담이다. 사실 c를 배운지는 오래되었지만, 너무 주먹구구식으로 배웠었다. 하지만.. 컴공(소) 전공수업을 들으면서 c로 코드를 짤 일이 매우매우 많아졌고..! 코드 예시도 c가 대다수라 이렇게 급하게 c 프로그래밍의 기초적인 내용들을 작성해본다. 현재 배우고 있는 내용 특성상 포인터와 포인터함수에 관한 내용을 위주로 작성하려고 한다. 아래의 내용들은 http://www.tcpschool.com/c/ 의 내용들과 https://wikidocs.net/book/1411 를 참조해서 작성하였다. Program & Programming Program이란 무엇일까? 프로그램이라는 것은 어떠한 일의 진행계획이나 순서를 말한다고 한다. 프로그램이란 '목적을 위해 작성된 일련의 명령문(어)의 순서나 목록'이라고 할 ..
-
LSTM(Long short term memory)개발 이야기/TIL 2023. 8. 7. 16:00
LSTM이 나오게 된 배경 RNN의 경우 상태와 현재 상태의 거리가 멀어질 경우 vanishing(exploding) gradient problem(거리가 멀 수록 gradient가 크게 줄어(증가) 학습에 영향을 주지 못하는 상태), 장기 의존성 문제(the problem of Long-Term Dependencies)가 발생하는데 이를 극복하기 위해 hidden state에 cell state를 추가한 구조이다. LSTM Long short term memory, LSTM은 이런 문제를 해결하기 위해 gate 구조를 추가하였다. LSTM 셀에서는 상태(state)가 크게 두 개의 벡터로 나누어집니다. $h_t$를 단기 상태(short-term state), $c_t$를 장기 상태(long-term s..
-
RNN(recurrent neural network)개발 이야기/TIL 2023. 8. 7. 14:13
Transformer: Attention is all you need를 읽기 전에 그 전에 나왔던 NLP 아키텍쳐 구조인 Recurrent Neural Networks(RNN)과 RNN의 일종인 Long Short-Term Memory models(LSTM)에 관해 간단히 리뷰해보려고 한다. First Order System 현재 시간의 상태는 이전 시간의 상태와만 관련이 있다. x: 상태(시세, 날씨, 숫자 등) t: 시간 u: 현재의 입력 이라고 하면 $$ x_t = f(x_{t-1},u_t) $$ 해당 시스템은 어떤 외부 입력 없이(초기조건을 제외하고), 잘 돌아간다, 즉, autonomus system이다 Q) 모든 시간 대 t에서 모든 상태 $ x_t $가 관측 가능한가? 보이지 않는 변수가 있..
-
TIL 파이썬으로 조합과 순열 구하기개발 이야기/TIL 2023. 2. 1. 20:15
브루트 포스 문제를 풀던 도중 리스트에서 조합을 만들어야하는 문제들이 많아서 작성하게 되었다. 파이썬에서 import를 하면 바로 구현 가능하지만 함수를 직접 구현하는 것이 의미가 있을 거 같아 글을 작성하였다! 방법 1 itertools 라이브러리 이용 조합 from itertools import combinations arr = [0, 1, 2, 3, 4, 5] print(list(combinations(arr, 3))) 순열 from itertools import permutations arr = [0, 1, 2, 3, 4, 5] print(list(permutations(arr, 3))) 방법 2 재귀를 이용한 방법 조합 def combinations(lst, r): result = [] if r..
-
python 우선순위 que vs 힙 자료구조개발 이야기/알고리즘 및 코테 준비 2023. 1. 27. 08:59
https://github.com/zinhyeok/algorithm_study/tree/main/priority_que GitHub - zinhyeok/algorithm_study: 알고리즘 스터디 기록용 알고리즘 스터디 기록용 . Contribute to zinhyeok/algorithm_study development by creating an account on GitHub. github.com 문제 https://www.acmicpc.net/problem/1927 1927번: 최소 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0..