렉토피아 정혜경 강사님의 Secure & Generic C 강의를 듣고, 정리한 내용입니다. 해당 내용의 저작권은 정혜경 강사님에게 있습니다. Constant C언어에서 상수는 `macro`, `const`, `enum`으로 나타낼 수 있다. 이 역시 적절히 사용하지 않으면 편의성을 얻지만 오버헤드를 발생시키거나, 원치 않는 결과를 만들어 낼 수 있다. 만약, `const int size = 3`을 재귀 함수 내에 선언하면 어떨까? 함수가 호출 될 때마다 const가 선언되고 해제 되므로 오브헤드가 되게 된다. 또한 `switch`에서는 `const`를 사용할 수 없다고 배열원소의 개수(index)로도 사용할 수 없다. 이를 해결하기 위해서는 `enum`을 통해 상수를 선언하여야 한다. 명시적 관계 선언..
렉토피아 정혜경 강사님의 Secure & Generic C 강의를 듣고, 정리한 내용입니다. 해당 내용의 저작권은 정혜경 강사님에게 있습니다. macro function 매크로 함수는 컴파일 전에 전처리기에 의해 텍스트로 치환이 된다. 또한 `argument`의 타입 제한이 없다는 특징을 가지고 있다. 이로써 매크로 함수는 편리함을 제공하지만, 간과할 경우 올바르지 않은 결과를 반환하므로 주의하여 사용하여야 한다. Side effect #include #define TEST(X) ((X) * (X)) int main() { int i = 1; int a = TEST(++i); } 간단하게 생각했을 때, 해당 코드는 `TEST(X)`에 `++i`값을 대입한다면 4라는 값이 반환될 것이라고 생각한다. 하지만..
문제 10422번: 괄호 ‘(‘, ‘)’ 문자로만 이루어진 문자열을 괄호 문자열이라 한다. 올바른 괄호 문자열이란 다음과 같이 정의된다. ()는 올바른 괄호 문자열이다. S가 올바른 괄호 문자열이라면, (S)도 올바른 괄호 www.acmicpc.net 문제 풀이 괄호의 문자열이 주어질 때, 올바른 괄호인지 찾는 문제이다. 이 문제는 `DP`로도 풀 수 있지만, 카탈랑 수로도 풀 수 있다. 카탈랑 수는 이진트리의 수를 셀 때 사용하는 수열이다. 카탈랑 수를 파이썬 코드로 나타내면 `factorial(2 * num) // (factorial(num) * factorial(num + 1))`이다. 이를 통해 문제를 해결할 수 있다. 코드 from math import factorial from sys impo..
문제 코딩테스트 연습 - 보석 쇼핑 ["DIA", "RUBY", "RUBY", "DIA", "DIA", "EMERALD", "SAPPHIRE", "DIA"] [3, 7] programmers.co.kr 문제 풀이 진열된 보석들 중 모든 종류의 보석을 적어도 1개 이상 포함하는 가장 짧은 구간을 찾는 문제이다. 앞에서부터 순차적으로 탐색을 하게 되면 효율성을 통과할 수 없다. 고민을 하다가 솔루션을 참조하였는데, `투포인터`를 사용하여야 하는 문제였다. 구현하는 방식은 솔루션과 같이 구현하면, 문제를 해결할 수 있다. 평소 `투포인터`를 활용하는 문제를 다루어보지 않아 풀이를 보고 나서야 이해를 할 수 있었다.🤔 코드 def solution(gems): start, end = 0, 0 gem_num = l..