본문 바로가기

728x90

전체 글

[디자인패턴][행위패턴] 책임 사슬 Chain of Responsibility - C++ [모던 C++ 디자인 패턴] 책을 바탕으로 공부하는 내용을 정리한 내용이다. Chain of Responsibility 어떤 시스템을 구성하고 있는 여러 개의 서로 다른 컴포넌트들이 어떤 메시지를 역할에 따라 주고받으며 처리할 수 있다. 개념적으로는 구현하기 쉬워 보인다. 어떤 처리를 수행할 담당 컴포넌트의 목록만 있으면 된다. 시나리오 컴퓨터 게임에서 크리처들이 있다고 하자. 공격력과 방어력 두 가지 값을 속성으로 갖는다고 하자. struct Creature { // 생성자와 add(cm); } else { next = cm; } } virtual void handle() { if ( nullptr != next ) { next->handle(); //< 핵심 부분 } } protected: Creat.. 더보기
[디자인패턴][구조패턴] 프록시 Proxy - C++ [모던 C++ 디자인 패턴] 책을 바탕으로 공부하는 내용을 정리한 내용이다. Proxy pattern Decorator 패턴은 객체의 기능을 수정/확장하는 여러 다른 방법들을 제시해준다. Proxy 패턴도 객체의 기능을 수정/확장한다는 목적은 비슷하지만 기존 API 사용 방식을 정확히 동일하게 유지하면서 내부 동작만 다르게 한다는 점이 다르다. Proxy는 API를 일관되게 유지하기 위한 것은 아니다. 같은 API에 대해서 서로 다른 종류의 서로 다른 목적의 완전히 다른 프록시들이 여러 개발자에 의해 만들어질 수 있기 때문이다. 스마트 포인터 가장 단순하면서도 직접적인 프록시 패턴은 스마트 포인터라 할 수 있다. 스마트 포인터는 포인터의 참조 횟수를 관리하고, 몇몇 연산자를 오버라이딩하는 래퍼(wrapp.. 더보기
[IT/리뷰] 임베디드 C를 위한 TDD 임베디드 C를 위한 TDD : 네이버 도서 (naver.com) 임베디드 C를 위한 TDD : 네이버 도서 네이버 도서 상세정보를 제공합니다. search.shopping.naver.com 약 10년 전에 나온 책이다. 지금까지 유명한 개발자들의 서적들을 읽으면서 공통적으로 느낀 점이 있다. 오래된 책이기 때문에 오래된 코드임에도 언어 상관없이 정말 코드들이 깔끔하다는 것이다. 이 책 또한 그렇다. 정말 간단한 코드지만, 누구나 쉽게 간단하게 짜지는 못한다는 것을 항상 느끼고 감탄하게 된다. 이 책에서는 TDD를 정말 쉽게 접근할 수 있게 알려준다. 처음부터 TDD를 시작하는 방법을 한 스텝씩 따라가면서 알려준다. 그게 끝이 아니다. TDD를 함에 있어서 중요한 내용들도 알려주고, 난이도 있는 방식까지 .. 더보기
[영화리뷰] 12 몽키즈(12 Monkeys) (1995) [영화리뷰] 12 몽키즈(12 Monkeys) (1995) 오랜만에 영화 리뷰다. 이 영화도 여자 친구랑 같이 보기 시작한 영화라서 따로 리뷰는 적지 않으려고 했다. 요즘 영화를 많이 안 보긴 했는데 여자 친구랑 본 것들은 원래 리뷰를 적지는 않았어서 그랬다. 그런데, 리뷰를 적는 이유는 마음에 드는 대사가 있어서다. 그 대사에 꽂혀서 리뷰를 쓰는 것이다 보니까 영화 자체를 편하게 봤어서 많은 리뷰는 하지 않으려 한다. 그리고 사실 여자 친구도 SF, 바이러스 재난 영화라고 해서 재밌을 것 같아 같이 본다고 했었는데, 생각했던 그런 긴박한 영화가 아니라 보다 말았다 ㅎㅎ; 혼자 집에서 마저 봤다. 우선 마음에 들었던 대사부터 남겨야겠다. "영화는 바뀌지 않아. 바뀔 수가 없지. 하지만 볼 때마다 달라 보.. 더보기
[백준알고리즘] 2104번: 부분배열 고르기-C++ 2104번: 부분배열 고르기 (acmicpc.net) 2104번: 부분배열 고르기 크기가 N(1 ≤ N ≤ 100,000)인 1차원 배열 A[1], …, A[N]이 있다. 어떤 i, j(1 ≤ i ≤ j ≤ N)에 대한 점수는, (A[i] + … + A[j]) × min{A[i], …, A[j]}가 된다. 즉, i부터 j까지의 합에 i부터 j까지의 최솟값을 곱 www.acmicpc.net 문제를 푸는데 되게 오래걸렸다. 처음에는 세그먼트 트리를 오랜만에 공부하려고 시작한 거라, 공부하는데 시간이 소요됐다. 그러고 나서는 어떻게 적용되면 좋을지 고민하느라 시간이 소요됐다. 마지막으로, 알 수 없는 '틀렸습니다'의 늪에서 헤어나오지 못했다. 게다가 하루에 30분 저도씩 밖에 시간을 못 쓰는 바람에 며칠이 걸.. 더보기
[백준알고리즘] 17829번: 222-풀링-C++ 17829번: 222-풀링 (acmicpc.net) 17829번: 222-풀링 조기 졸업을 꿈꾸는 종욱이는 요즘 핫한 딥러닝을 공부하던 중, 이미지 처리에 흔히 쓰이는 합성곱 신경망(Convolutional Neural Network, CNN)의 풀링 연산에 영감을 받아 자신만의 풀링을 만들고 이를 22 www.acmicpc.net 다른 문제를 풀다가.. 틀렸습니다에 고생하고 있다. 그래서 머리 식힐 겸 실버 문제를 풀어봤다. (그런데 한번 틀렸다 ㅎ) 이 문제가 가장 쉬운 형태의 분할 정복 문제 중의 하나라고 생각한다. 문제 풀이 분할 정복을 적용하면 쉽게 문제를 통과할 수 있다. 단순하게 큰 행렬(matrix)를 \(2 \times 2\) 크기로 나눠서 두 번째로 큰 값을 뽑아낸다. 그렇게 뽑아낸 값.. 더보기
[백준알고리즘] 4256번: 트리-C++ 4256번: 트리 (acmicpc.net) 4256번: 트리 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스의 첫째 줄에는 노드의 개수 n이 주어진다. (1 ≤ n ≤ 1,000) BT의 모든 노드에는 1부터 n까지 서로 다른 번호가 매겨져 있다. 다음 www.acmicpc.net 이전에 풀었던 '트리의 순회' 문제와 유사하다. [백준알고리즘] 2263번: 트리의 순회-C++ (tistory.com) [백준알고리즘] 2263번: 트리의 순회-C++ 2263번: 트리의 순회 (acmicpc.net) 2263번: 트리의 순회 첫째 줄에 n(1 ≤ n ≤ 100,000)이 주어진다. 다음 줄에는 인오더를 나타내는 n개의 자연수가 주어지고, 그 다음 줄에는 같은 식으로 포스트오더가 suri78.. 더보기
[백준알고리즘] 4779번: 칸토어 집합-C++ 4779번: 칸토어 집합 (acmicpc.net) 4779번: 칸토어 집합 칸토어 집합은 0과 1사이의 실수로 이루어진 집합으로, 구간 [0, 1]에서 시작해서 각 구간을 3등분하여 가운데 구간을 반복적으로 제외하는 방식으로 만든다. 전체 집합이 유한이라고 가정하고, www.acmicpc.net 칸토어 집합이 뭔지 궁금해서 찾아봤다. 칸토어 집합 - 위키백과, 우리 모두의 백과사전 (wikipedia.org) 근데 내용이 뭔 말인지 모르겠어서 일단 풀었다. 문제 자체는 문자열을 이용해 쉽게 풀 수 있었다. 같은 구조가 내부적으로 반복되기 때문에 분할 정복 알고리즘을 이용했다. 문제 풀이 선의 길이가 1이 될 때까지 반복하면서, 선을 계속해서 3등분을 했다. 첫 번째 조각과 마지막 세 번째 조각은 재귀적으.. 더보기

728x90