Problem Solving43 List & Memory Pool List로 stack, queue(, priority queue)를 구현할 수 있다. Memory pool (PS에 도움이 되는 technique) 예를 들어 Apple이라는 struct의 instance가 최대 100개까지만 필요하다면 (문제에 명시되어 있다면), 필요할 때마다 메모리를 할당했다 지우는 것보다 미리 할당해놓고 계속해서 재사용하자는 것이 memory pool의 핵심. struct Apple { int age; } apple[100]; int apple_idx; void init() { apple_idx = 0; } Apple* make_apple(int age) { apple[apple_idx].age = age; return &apple[apple_idx++]; } int main() .. 2022. 1. 19. Is it necessary to get a bachelor of Computer Science to become a software engineer? 줄곧 생각하던 문제이다. Software engineer가 되기 위해 컴퓨터 과학 전공 학위를 받을 이유가 있는가. 인터넷에는 6개월만 노력하면 (물론 엄청난 노력을 기해야겠지만) 누구나 개발자가 되어 많은 연봉을 받을 수 있다는 글들이 넘쳐난다. 나도 줄곧 이 문제에 스트레스를 받았다. 내가 대학을 왜 다니는 것인지, 전공 공부는 왜 그리 열심히 했는지, 그냥 개발 툴들이나 열심히 익히고 포트폴리오로 보여줄 수 있는 프로젝트들이나 할 것이지. 하지만 정보올림피아드 위원장이시자 건국대학교에서 교수로 재직중이신 김성렬 교수님은 조금 다른 이야기를 하셨다. 기초, 즉 알고리즘적 사고를 할수 있는가가 개발자들에게 있어 가장 중요하다는 이야기를 해주셨다. 그리고 그 사고를 배우기 위해 4년동안 대학을 다니는 것.. 2022. 1. 18. Bit operation & Bit mask Bit operation을 이용해 다른 변수 선언 없이 swap 하는 방법 void swap(int *a, int *b) { *a ^= *b; *b ^= *a; *a ^= *b; } 비트를 이용하여 쉽게 set을 나타낼 수 있다. i번째 원소가 set에 포함되어 있는지 확인하려면 set을 의미하는 값의 i번째 bit이 켜져 있는지를 확인하는 것이다. int나 long long 등의 자료형들이 가질 수 있는 bit 개수를 고려하고 구현하면 된다. 응용으로는 bit mask + dp 문제가 있다. 아주 강력한 방법이지만 자료형의 크기 때문에 가질 수 있는 상태가 제한된다. array 형태로 만들면 확장 가능할 듯. (쓸 일이 있을까?) int array[10]; /* array[0]: 0번부터 31번 원소까.. 2022. 1. 18. 문제를 풀기 전 주의해야 할 몇 가지 1. 메모리 조건을 잘 살피자. 2. Recursion을 썼을 때 stack이 터질 수 있다. 3. TBD 2022. 1. 18. 이전 1 ··· 5 6 7 8 9 10 11 다음