본문 바로가기

728x90

분류 전체보기

[C++][Effective C++] 49~52. new와 delete를 내 맘대로 [Effective C++(3판)]에 대한 내용을 공부하면서 정리한 내용이다. 이번에 요약하는 내용은 49~52 항목으로 아래와 같다. 49. new 처리자의 동작 원리를 제대로 이해하자 50. new 및 delete를 언제 바꿔야 좋은 소리를 들을지를 파악해두자 51. new 및 delete를 작성할 대 따라야 할 기존의 관례를 잘 알아 두자 52. 위치 지정 new를 작성한다면 위치 지정 delete도 같이 준비하자 요약 49. new 처리자의 동작 원리를 제대로 이해하자 사용자가 보낸 메모리 할당 요청을 operator new 함수가 만족하지 못할 경우에는 예외를 던지고 있다. 예전에는 malloc을 사용한 것과 같이 NULL 포인터를 반환했다. 메모리 할당에 실패한 경우 예외를 던지기 전에 사용자.. 더보기
[백준알고리즘] 5904번: Moo 게임 -C++ [백준알고리즘] 5904번: Moo 게임 -C++ 5904번: Moo 게임 (acmicpc.net) 5904번: Moo 게임 Moo는 술자리에서 즐겁게 할 수 있는 게임이다. 이 게임은 Moo수열을 각 사람이 하나씩 순서대로 외치면 되는 게임이다. Moo 수열은 길이가 무한대이며, 다음과 같이 생겼다. m o o m o o o m o o m o o o www.acmicpc.net 분할 정복 문제로, 이래저래 고민하다가 길이를 기준으로 재귀적으로 풀었다. 최악의 경우라도 수의 범위나 시간이 재귀적으로도 충분할 것이라 생각했다. 잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다 문제 풀이 문제에서 주어진 조건을 이용했다. \(M(k) =\ 'o'가\ k+2개인\ mo..o\ 문자열\) \(S(k) = S(.. 더보기
[C++][Effective C++] 41~48. 템플릿과 일반화 프로그래밍 [Effective C++(3판)]에 대한 내용을 공부하면서 정리한 내용이다. 이번에 요약하는 내용은 41~48 항목으로 아래와 같다. 41. 템플릿 프로그램이의 천릿길도 암시적 인터페이스와 컴파일 타임 다형성부터 42. typename의 두 가지 의미를 제대로 파악하자 43. 템플릿으로 만들어진 기본 클래스 안의 이름에 접근하는 방법을 알아 두자 44. 매개변수에 독립적인 코드는 템플릿으로부터 분리시키자 45. "호환되는 모든 타입"을 받아들이는 데는 멤버 함수 템플릿이 직방! 46. 타입 변환이 바람직할 경우에는 비멤버 함수를 클래스 템플릿 안에 정의해 두자 47. 타입에 대한 정보가 필요하다면 특성정보 클래스를 사용하자 48. 템플릿 메타프로그래밍, 하지 않겠는가? 요약 41. 템플릿 프로그램이의 .. 더보기
[영화리뷰] 케빈에 대하여(We Need to Talk About Kevin) (2011) [영화리뷰] 케빈에 대하여(We Need to Talk About Kevin) (2011) 와 기대보다 훨씬 재밌게 봤다. 시간 가는 줄 모르고 빠져들어서 봤다. 뭐 잔잔한 느낌의 스릴러를 싫어하는 사람들은 지루하다고만 할 수도 있겠지만, 상당히 집중되고 몰입해서 봤다. 영상미 해석은 뒤로 미루고, 먼저 영상 자체만 두고 보자. 굉장히 색감이 이쁘고 구도도 이쁘다. 필카 감성 낭낭하게 찍은 사진들을 보는 느낌이다. 줄거리 빼고 영상 자체만 보면 장면 하나 하나가 굉장히 이쁘다. 이런 색감에 영화 자체에서 클로즈업과 익스트림 클로즈업까지 굉장히 잘 쓴다. 거리를 두고 찍을 때도 있지만, 굉장히 가깝게 보여주는 장면들이 많다. 이게 내용까지 보면 무섭고 긴장감이 생기는 장면도 있지만 역시 장면 하나하나 보면.. 더보기
[C++][Effective C++] 32~40. 상속, 그리고 객체 지향 설계 [Effective C++(3판)]에 대한 내용을 공부하면서 정리한 내용이다. 이번에 요약하는 내용은 32~40 항목으로 아래와 같다. 32. public 상속 모형은 반드시 "is-a"를 따르도록 만들자 33. 상속된 이름을 숨기는 일은 피하자 34. 인터페이스 상속과 구현 상속의 차이를 제대로 파악하고 구별하자 35. 가상 함수 대신 쓸 것들도 생각해 두는 자세를 시시때때로 길러 두자 36. 상속받은 비가상 함수를 파생 클래스에서 재정의하는 것은 절대 금물! 37. 어떤 함수에 대해서도 상속받은 기본 매개변수 값은 절대로 재정의하지 말자 38. "has-a" 혹은 "is-implemented-in-terms-of"를 모형화할 때는 객체 합성을 사용하자 39. private 상속은 심사숙고해서 구사하자.. 더보기
[백준알고리즘] 4375번: 1 -C++ (테스트케이스의 개수가 주어지지 않은 경우) [백준알고리즘] 4375번: 1 -C++ (테스트케이스의 개수가 주어지지 않은 경우) 4375번: 1 (acmicpc.net) 4375번: 1 2와 5로 나누어 떨어지지 않는 정수 n(1 ≤ n ≤ 10000)가 주어졌을 때, 1로만 이루어진 n의 배수를 찾는 프로그램을 작성하시오. www.acmicpc.net 정수론 문제를 보다가 재밌어 보여서 풀어봤다. 처음에 문제가 뭔 소리인지 몰랐다가 문제를 이해하고 나서는 쉽게 풀 수 있었다. 잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다 문제 풀이 문제에서 요구하는 것은 정말 1로 이루어진 수(1, 11, 111,...) 중에서 N의 배수인 값의 자릿수를 구하는 것이다. 따라서, 정말 간단하게 뒤에 1을 붙이면서 N으로 나누어 떨어지는지 확인하면 된다. .. 더보기
[백준알고리즘] 1715번: 카드 정렬하기 -C++ [백준알고리즘] 1715번: 카드 정렬하기 -C++ 1715번: 카드 정렬하기 (acmicpc.net) 1715번: 카드 정렬하기 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장 www.acmicpc.net 그리디 알고리즘을 몇 개 풀어보면서 느낀 게, 참 SJF 방식만 알면 모든 문제가 쉽게 생각되는 것 같다. 그만큼 SJF가 대표적인 그리디적인 방식인 것이기도 하지만 말이다. 잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다 문제 풀이 우선, 카드의 개수를 봤을 때 굳이 배열을 안 쓰고 map을 써도 시간이 충분하겠다고 생각이 들었다. map과.. 더보기
[C++][Effective C++] 26~31. 구현 [Effective C++(3판)]에 대한 내용을 공부하면서 정리한 내용이다. 이번에 요약하는 내용은 26~31 항목으로 아래와 같다. 26. 변수 정의는 늦출 수 있는 데까지 늦추는 근성을 발휘하자 27. 캐스팅은 절약, 또 절약! 잊지 말자 28. 내부에서 사용하는 객체에 대한 "핸들"을 반환하는 코드는 되도록 피하자 29. 예외 안전성이 확보되는 그날 위해 싸우고 또 싸우자! 30. 인라인 함수는 미주알고주알 따져서 이해해 두자 31. 파일 사이의 컴파일 의존성을 최대로 줄이자 요약 26. 변수 정의는 늦출 수 있는 데까지 늦추는 근성을 발휘하자 프로그램 제어 흐름이 변수의 정의에 닿으면 생성자가 호출된다. 그리고 그 변수가 유효 범위를 벗어나면 소멸자가 호출된다. 이런 비용을 낭비하지 않기 위해서.. 더보기

728x90