본문 바로가기

분류 전체보기139

Fibonacci(피보나치), Tribonacci 문제 풀이 DP, Recursion, Bottom Up Tribonacci 수열 피보나치 수열이란, 특정 항이 앞의 두 항의 합과 같은 수열을 의미한다. 첫번째와 두번째 항의 값은 0, 1로 고정된다. 피보나치 수열의 n 번째 값이 무엇인지 계산하는 것이 코딩 기본 문제에 종종 등장한다. Tribonacci 수열은, 피보나치 수열에서 1개의 항을 더 추가하는 것이다. 즉, 특정 항의 값이 앞의 세개 항의 합과 같은 수열이다. 이때 첫번째, 두번째, 세번째 항의 값은 각각 0, 1, 1로 고정된다. 예를 들어, Tribonacci의 4번째 항은 0 + 1 + 1 = 2이다. 5번째 항은 1 + 1 + 2 = 4가 되는 것이다. Tribonacci 수열의 n번째 값을 계산하는 문제도 종종 코딩 문제로 나온다. 문제 풀이 방식은 피보나치와 다를게 없다. 연습해보고.. 2023. 7. 27.
Monotonic Stack, 단조 스택이란? Monotonic Stack (단조 스택) Monotonic Stack은 원소가 Increasing / Decreasing으로 정렬되어 있는 배열을 의미한다. Monotonic Stack 그 자체로 유용함은 없지만, 정렬되어 있지 않은 배열을 Monotonic Stack으로 만드는 과정 혹은 Monotonic Stack에 새로운 원소가 입력되었을 때, 정렬하는 과정에서 발생하는 정보들이 유용하다. 이를 사용해 풀 수 있는 문제들이 있는데, 대표적인 문제는 Find Next Greatest Number 이다. Brute Force로도 풀 수 있지만 Time Complexity : O(n^2)이므로 입력 배열의 원소 개수가 많을 수록 불리하다. 이때 Monotonic Stack을 만드는 과정에서의 정보를 이.. 2023. 7. 24.
LeetCode 1768 Merge String Alternately 간단한 아이디어로 풀 수 있는 쉬운 문제이다. String Class 메서드 사용에 익숙해야 한다. 훨씬 간단하게도 짤수 있는데! class Solution { public: string mergeAlternately(string word1, string word2) { unsigned int minLength = 0; unsigned int Lengthword1 = word1.length(); unsigned int Lengthword2 = word2.length(); string MergedString; string SortedMergedString; if (Lengthword1 > Lengthword2) { for (unsigned int i = 0; i < (Lengthword1 - Lengthw.. 2023. 7. 17.
[C언어] 변수의 유효 범위 (variable scope) 아래는 문제가 있는 코드로 정적검증을 돌려보면 높은 위험성의 코드로 분류될 수 있다. 무엇이 문제인지 모르겠다면 변수의 유효 범위에 대한 공부가 필요하다. 변수의 유효 범위란 OS가 변수의 메모리를 할당 및 유지해주는 영역, 범위를 말한다. 유효 범위를 벗어나면 OS에서는 변수의 메모리를 해제한다. 지역 변수의 유효 범위 지역 변수는 선언된 블록 내에서만 유효하다(메모리가 할당된 채 유지된다). 블록은 중괄호 {} 내 영역이다. 함수도 하나의 블록이다. 위 그림에서 pVar1 포인터 변수는 main {} 블럭과 if {} 블럭에서 모두 유효하다. 이는 메모리가 할당되어 있는 것이고, 조사식을 통해 변수의 값을 확인할 수 있다. 하지만 Var2 변수는 if{} 블럭에서만 유효하고 main {} 블럭에서는 .. 2023. 7. 3.
[MATLAB] mex 파일이란 mex 파일이란 MATLAB에서 command line으로 호출 가능한 C 프로그램, 함수를 말한다. 사용 이유 C 언어로 작성된 함수가 다른 언어 대비 low level에서 빠른 수행 시간을 보이므로, High Level Application인 MATLAB에서 빠른 연산을 위해 사용한다. 2023. 6. 27.
[Git 스터디 3] Git 시작하기 본 내용은 Git 공식 홈페이지에 무료로 공개된 Pro Git 서적 내용을 정리하였습니다. Reference : https://git-scm.com/book/en/v2 Git은 SW개발자라면 사실 모르면 안되는 개념 ㅎㅎ. 엄청나게 유용하기 때문에 널리 쓰인다. Git이 개발 생산성에 기여하는 바가 상당히 크다. CLI Git은 CLI와 GUI로 사용할 수 있다. 그런데 Git의 모든 기능을 지원하는 것은 CLI이다. GUI 프로그램 대부분이 Git 기능의 일부만 구현한다. 따라서 CLI를 사용할 줄 알면 GUI도 쉽게 사용할 수 있지만, 그 반대는 힘들다. Git 공부는 CLI로 하는게 좋겠다. (나도 sourcetree만 쓰다보니 CLI로 쓰는것에 두려움이 있고 Git을 잘 활용하지 못한다. 이참에 .. 2023. 5. 23.