간편결제, 신용카드 청구할인
삼성카드 6% (25,380원)
(삼성카드 6% 청구할인)
인터파크 롯데카드 5% (25,650원)
(최대할인 10만원 / 전월실적 40만원)
북피니언 롯데카드 30% (18,900원)
(최대할인 3만원 / 3만원 이상 결제)
NH쇼핑&인터파크카드 20% (21,600원)
(최대할인 4만원 / 2만원 이상 결제)
Close

모던 C++ 챌린지 : 100가지 문제로 익히는 모던 C++의 다양한 기능

원제 : Modern C++ Challenge
소득공제

2013년 9월 9일 이후 누적수치입니다.

판매지수 557
?
판매지수란?
사이트의 판매량에 기반하여 판매량 추이를 반영한 인터파크 도서에서의 독립적인 판매 지수입니다. 현재 가장 잘 팔리는 상품에 가중치를 두었기 때문에 실제 누적 판매량과는 다소 차이가 있을 수 있습니다. 판매량 외에도 다양한 가중치로 구성되어 최근의 이슈도서 확인시 유용할 수 있습니다. 해당 지수는 매일 갱신됩니다.
Close
공유하기
정가

30,000원

  • 27,000 (10%할인)

    1,500P (5%적립)

할인혜택
적립혜택
  • I-Point 적립은 출고완료 후 14일 이내 마이페이지에서 적립받기한 경우만 적립됩니다.
  • 추가혜택
    배송정보
    주문수량
    감소 증가
    • 이벤트/기획전

    • 연관도서(31)

    • 사은품(5)

    책소개

    C++는 업계와 학계를 비롯한 다양한 분야에서 지난 수십 년 동안 널리 사용되며 자리를 공고히 해왔다. 하지만 C++는 결코 배우기 쉬운 언어가 아니다. 한 가지 언어를 통달하는 데 가장 좋은 방법은 실무에서 다양한 프로그램을 작성하며 직접 그 언어의 특징을 활용해 보는 것이지만, 그런 기회를 찾기는 쉽지 않다. 이 책은 모던 C++에서 제공하는 다양한 기능과 표준 라이브러리, 더 나아가 서드 파티 크로스 플랫폼 라이브러리를 활용할 수 있도록 구성된 실전에서 볼 수 있을 법한 100가지 연습 문제를 담고 있다. 이 책이 모던 C++ 학습에 좋은 동반자가 될 것이다.

    출판사 서평

    [이 책에서 다루는 내용]

    - JSON과 XML 데이터 직렬화 및 역직렬화
    - 사용자 간의 안전한 통신을 위해 메시지 암호화하고 서명
    - SQLite 데이터베이스를 애플리케이션에 내장하고 사용
    - 스레드와 비동기 함수를 이용해 범용 병렬 알고리즘 구현
    - 파일을 ZIP 파일로 압축하고 복원
    - 원형 버퍼나 우선순위 큐 같은 데이터 구조 구현
    - 특정한 문제를 풀기 위한 알고리즘과 함께 범용 알고리즘 구현
    - TCP/IP로 통신하는 클라이언트-서버 애플리케이션 개발
    - HTTP REST 서비스 사용
    - 디자인 패턴을 이용해 실전 문제 해결

    [이 책의 대상 독자]

    C++를 배우는 중이거나 연습을 위한 도전 과제를 찾고 있다면 이 책은 당신을 위한 것이다. 다른 언어에 대한 경험이 있는지와 관계없이, C++를 배우는 모두에게 도움이 될 수 있는 실용적인 연습 문제와 실전 문제로 구성됐다. 언어나 표준 라이브러리의 기능을 설명하기보다(그런 것들은 책이나 문서, 튜토리얼 비디오를 통해 배울 수 있다) 다양한 난이도의 과제를 수행하며 다른 자료에서 배운 기술들을 활용할 수 있도록 한다. 사실 이 책의 문제들은 언어에 구애 받지 않기 때문에 C++로 된 풀이에서 직접적인 도움을 받기는 어렵겠지만 다른 프로그래밍 언어를 배울 때도 사용할 수 있을 것이다.

    [이 책의 구성]

    1장, '수학 문제'에서는 다음 장들에서 다룰 더 어려운 문제들에 앞서 몸을 푸는 과정으로, 수학 연습 문제로 구성돼 있다.
    2장, '언어 기능'에서는 연산자 오버로딩, 이동 의미론, 사용자 정의 리터럴부터 가변인자 함수, 폴드 표현식, 타입 추론과 같은 템플릿 메타프로그래밍 측면까지 언어가 제공하는 기능들을 연습할 수 있는 문제들을 실었다.
    3장, '문자열과 정규 표현식'에서는 문자열과 다른 데이터 타입 간의 변환, 문자열의 분할과 결합, 정규 표현식을 이용한 작업에 이르기까지 문자열을 조작하는 방법과 관련된 문제를 풀어본다.
    4장, '스트림과 파일 시스템'에서는 출력 스트림 조작을 비롯해 C++ 17의 filesystem 라이브러리로 파일과 디렉토리를 다뤄본다.
    5장, '날짜와 시간'에서는 곧 출시될 C++ 20 확장에 포함된 chrono 라이브러리를 미리 체험해본다. 또한 새로 추가된 표준을 바탕으로 만들어진 date 라이브러리로 풀이할 수 있는 달력과 타임존에 관련된 다양한 문제를 살펴본다.
    6장, '알고리즘과 데이터 구조'에서는 기존에 알려진 표준 알고리즘을 활용해 풀 수 있는 다양한 문제를 포함해, 원형 버퍼나 우선순위 큐를 이용해 자신만의 범용 알고리즘을 구현해야 하는 문제도 알아본다. 이 장은 진화 알고리즘과 셀룰러 오토마타를 배울 수 있는 두 가지 흥미로운 문제인 도킨스의 족제비 프로그램과 콘웨이의 라이프 게임 프로그램을 구현해보는 것으로 마무리한다.
    7장, '동시성'에서는 스레드와 비동기 함수를 사용해 범용적인 병렬 알고리즘을 구현하는 문제와 함께 동시성과 관련된 몇 가지 실전 문제를 풀어본다.
    8장, '디자인 패턴'에서는 데코레이터, 컴포지트, 책임 연쇄, 템플릿 메소드 등 디자인 패턴으로 해결할 수 있는 일련의 문제를 알아본다.
    9장, '데이터 직렬화'에서는 몇 가지 문제를 통해 일반적으로 가장 많이 사용되는 직렬화 포맷인 JSON과 XML을 다룬다. 또한 서드 파티 오픈소스 크로스 플랫폼 라이브러리를 사용해 PDF 파일 만들기에 도전해본다.
    10장, '압축, 이미지, 데이터베이스'에서는 zip 압축 파일과 관련된 문제를 해결하고, 캡차(Captcha) 방식의 시스템이나 바코드 생성기와 같은 실전 문제를 위해 PNG 파일을 만들어본다. 또한 애플리케이션에 SQLite 데이터베이스를 내장하고 활용해본다.
    11장, '암호화'에서는 주로 데이터 암호화와 사이닝을 위해 Crypto++ 라이브러리를 사용하는 방법을 배운다. 또한 자신만의 Base64 인코딩 및 디코딩 유틸리티를 구현해본다.
    12장, '네트워킹과 서비스'에서는 TCP/IP를 통해 통신하는 자신만의 클라이언트-서버(Client-server) 애플리케이션을 구현해본다. 또한 비트코인 환율 조회나 문자 번역 API와 같은 다양한 REST 서비스를 사용해 볼 것이다.

    [지은이의 말]

    C++는 가장 널리 쓰이는 프로그래밍 언어 중 하나로, 게이밍, GUI 프로그래밍, 운영체제 등 수 많은 분야에서 사용되고 있다. 지난 수 년 동안, C++는 전 세계 소프트웨어 개발자들에게 최선의 선택지가 되는 언어로 발전해 왔고 여전히 그 자리를 지키고 있다. 이 책은 주목할 만한 C++의 기능과 함께 애플리케이션의 요구사항을 어떻게 구현해 충족시킬 수 있는지를 보여준다. 이 책에서 다루는 고유한 문제들은 언어에 대한 독자의 지식을 시험하려는 것이 아니라, 좀더 다른 관점에서 생각하고 최선의 해결 방법을 찾아 나가도록 스스로 시험해볼 기회를 제공한다. 1장부터 다양한 범위의 도전적인 문제들을 만나게 될 것이다. 해결 과정에서 벽에 부딪히더라도 책에서 안내하는 방법으로 차근차근 진행한다면 낙담할 필요가 없다.

    [옮긴이의 말]

    C++의 최초 구현체가 등장한 지 35년이라는 시간이 지났고, 한때 이 언어에 대한 부정적인 전망이 가득하던 시절도 있었다. 그러나 C++는 오늘날까지 여전히 세계에서 가장 널리 사용되는 프로그래밍 언어 순위표의 윗자리를 공고히 지키고 있다. C++에는 다른 언어들에 없는 강점이 있기 때문이다.
    C++의 강점은 분명하다. 무엇보다도 성능이다. 개발자는 고수준의 추상화를 유지하면서도 타깃 하드웨어에 최적화된 저수준의 코드를 이용해 고성능 프로그램을 제작할 수 있다. 오늘날 대부분의 플랫폼에서 네이티브 컴파일러를 지원하므로 이러한 강점이 극대화된다. 이 장점은 인공지능과 머신러닝에 대해 관심이 높아진 오늘날에 들어 더욱 빛을 발한다. 머신러닝 프레임워크들 대부분 내부적으로 C++를 기반으로 작성돼 있으며, 특히 연구 영역을 벗어나 실제 상용화되는 제품을 제작하는 과정에서는 직접 C++를 사용하는 것 이외의 선택지를 생각할 수 없을 때가 많다.
    또한 C++는 진보적이다. 멀티 패러다임을 표방하는 언어답게 다른 어떤 언어보다도 빠르게 새로운 개념과 문법들을 표준으로 받아들이고 있다. 이를 통해 높은 런타임 성능을 유지하면서도 훨씬 짧고 간결하며 직관적인 코드를 작성할 수 있게 됐다.
    하지만 C++는 결코 배우기 쉬운 언어가 아니다. 때로는 위에서 언급한 장점들이 오히려 진입 장벽으로 작용하기도 한다. 메모리 관리와 같은 기능들을 직접 다뤄야 하기 때문에 프로그램을 안전하게 동작하도록 만들려면 주의해야 할 점이 많다. 언어의 고유한 특징으로 인해 프로그램을 설계할 때 다른 언어를 이용할 때와는 다른 접근법이 필요할 때도 있다. 이러한 상황에 대한 해법들이 실제로는 어느 정도 패턴으로 정형화돼 있기는 하지만 초보자나 중급자 입장에서 이를 잘 이해하고 직접 활용하기는 어려운 일이다. 표준에 새롭게 추가된 기능들을 완전히 활용하기 위해서 때로는 코드를 이전과는 완전히 다른 개념을 바탕으로 작성해야 할 필요도 있는데, 이는 사실 C++에 익숙한 사용자라도 결코 쉬운 일이 아니다.
    지은이의 말에서도 언급했듯이, 프로그래밍 언어를 익히는 가장 좋은 방법은 실전에서 직접 언어의 기능을 활용해 프로그램을 작성해보며, 좋은 코드를 많이 읽는 것이다. 하지만 이를 혼자 연습하는 일은 생각보다 쉽지 않다. 적당한 주제를 고르기도 어려울 뿐더러, 주제를 고르더라도 주제에 맞춰 가이드가 될 만한 좋은 코드를 찾는 것이 어렵기 때문이다. 이 책은 이러한 상황에 처한 이들에게 좋은 참고서다. 실무에서 겪을 법한 다양한 주제의 연습 문제와 함께 모던 C++의 새로운 기능들을 활용한 풀이를 담고 있다.
    이 책은 언어 기능 자체를 학습하기 위한 튜토리얼을 제공하지는 않는다. 아마 이 책만으로 모던 C++를 익히기에는 충분하지 않을 텐데, 문제에서 주어지는 내용들이 구체적이지 않아 때로는 불친절하게 느껴질 수도 있다. 하지만 이 책의 목적은 분명하다. 바로 실무에 가까운 경험을 통해 스스로 문제를 정의하고, 사고의 틀을 넓혀 문제를 능숙하게 해결할 수 있는 능력을 기를 수 있도록 돕는 것이다. 이 책은 그런 면에서 정말 좋은 책이라 할 수 있다.
    풀이를 참조하기 전에 꼭 문제에 대해 고민할 시간을 가질 수 있기를 바란다. 혼자서 생각하는 것도 좋고, 인터넷 검색이나 다른 책을 참조하는 것도 좋다. 나름대로 풀이를 작성하고, 책에서 제시하는 풀이를 참고해 자신의 코드를 더욱 개선할 수 있다.
    조금 더 고민한다면 책에서 제시하는 것보다 더 나은 방법을 찾아볼 여지도 얼마든지 있다. 이 책을 읽으며 고민할 만한 거리를 많이 얻을 수 있기를 바란다. 결국 여러분을 전문가로 만드는 것은 이러한 고민들의 시간이기 때문이다.

    목차

    1장. 수학 문제

    1. 3이나 5로 나누어 떨어지는 자연수의 합을 계산하는 프로그램 구현하기
    2. 최대공약수 프로그램 구현하기
    3. 최소공배수 프로그램 구현하기
    4. 주어진 수보다 작은 가장 큰 소수를 계산하는 프로그램 구현하기
    5. 섹시 소수 짝을 출력하는 프로그램 구현하기
    6. 과잉수 출력 프로그램 구현하기
    7. 친화수 짝을 출력하는 프로그램 구현하기
    8. 암스트롱 수를 출력하는 프로그램 구현하기
    9. 소인수 분해 프로그램 구현하기
    10. 그레이 코드 출력 프로그램 구현하기
    11. 로마 표기법 변환 프로그램 구현하기
    12. 가장 긴 콜라츠 수열 출력 프로그램 구현하기
    13. 파이 값 계산 프로그램 구현하기
    14. ISBN 검증 프로그램 구현하기

    2장. 언어 기능

    15. IPv4 데이터 형식 표현하는 함수 작성하기
    16. 범위 안에 있는 IPv4 주소 열거하기
    17. 기본적인 연산을 지원하는 2차원 배열 만들기
    18. 여러 수를 인자로 받는 최소 함수 작성하기
    19. 컨테이너에 여러 값 삽입하기
    20. 조건별 컨테이너 안의 원소 확인하는 함수 작성하기
    21. 시스템 핸들 래퍼 작성하기
    22. 온도 단위 리터럴을 제공하는 라이브러리 작성하기

    3장. 문자열과 정규 표현식

    23. 바이너리 데이터를 문자열로 변환하기
    24. 문자열을 바이너리 데이터로 변환하기
    25. 문자열을 제목 형식으로 바꾸기
    26. 구획 문자로 나누어진 문자열 합치기
    27. 구획 문자 리스트를 바탕으로 문자열을 토큰으로 분리하기
    28. 가장 긴 회문 부분 문자열 출력하기
    29. 차량 번호판 검증하기
    30. URL 추출하기
    31. 날짜를 문자열로 변환하기

    4장. 스트림과 파일 시스템

    32. 파스칼의 삼각형
    33. 프로세스를 표로 출력하기
    34. 텍스트 파일에서 빈 줄 제거하기
    35. 디렉토리 크기 계산하기
    36. 주어진 날짜보다 오래된 파일 삭제하기
    37. 디렉토리에서 정규 표현식과 일치하는 파일 찾기
    38. 임시 로그 파일

    5장. 날짜와 시간

    39. 함수 실행 시간 측정하기
    40. 두 날짜 사이의 날 수를 반환하기
    41. 주어진 날짜의 요일 찾기
    42. 한 해의 몇 번째 날인지 찾기
    43. 여러 시간대에 걸친 회의 시각 출력하기
    44. 달력 출력하기

    6장. 알고리즘과 데이터 구조

    45. 우선순위 큐 데이터 구조 구현하기
    46. 원형 버퍼 데이터 구조 구현하기
    47. 이중 버퍼 구현하기
    48. 범위 안에서 가장 빈번하게 등장하는 원소와 등장 횟수를 반환하기
    49. 텍스트 히스토그램 구하기
    50. 전화번호 목록 필터링하기
    51. 전화번호 목록 변형하기
    52. 문자열로 만들 수 있는 모든 순열 생성하기
    53. 영화 평균 평점 계산하여 출력하기
    54. 쌍 알고리즘 함수 작성하기
    55. 결합 알고리즘 함수 작성하기
    56. 선택 알고리즘 함수 작성하기
    57. 정렬 알고리즘 함수 작성하기
    58. 노드 사이의 최단 경로 계산하여 출력하기
    59. 족제비 프로그램 구현하기
    60. 생명 게임 구현하기

    7장. 동시성

    61. 병렬 변환 알고리즘 작성하기
    62. 스레드 기반 병렬 최솟값, 최댓값 탐색 알고리즘 작성하기
    63. 비동기 함수 기반 병렬 최솟값, 최댓값 탐색 알고리즘 작성하기
    64. 병렬 정렬 알고리즘 작성하기
    65. 스레드 컴포넌트가 안전하게 콘솔에 로그 메시지를 출력하는 함수 작성하기
    66. 고객 서비스 시스템 구현하기

    8장. 디자인 패턴

    67. 패스워드 검증 프로그램 구현하기
    68. 임의의 패스워드를 생성하는 프로그램 구현하기
    69. 사회보장번호 생성 프로그램 구현하기
    70. 승인 시스템 구현하기
    71. 관측 가능한 벡터 컨테이너 작성하기
    72. 할인가 적용해 최종 가격 계산하는 프로그램 구현하기

    9장. 데이터 직렬화

    73. XML 직렬화 및 역직렬화하기
    74. XPath를 이용해 XML 데이터 선택하기
    75. 데이터를 JSON으로 직렬화하기
    76. JSON으로부터 데이터 역직렬화하기
    77. 영화 목록을 PDF로 출력하기
    78. 이미지 집합에서 PDF 생성하기

    10장. 압축, 이미지, 데이터베이스

    79. ZIP 아카이브 파일 안의 파일 찾기
    80. ZIP 아카이브 압축하고 해제하기
    81. 패스워드가 있는 ZIP 아카이브 압축하고 해제하기
    82. 국기 PNG 파일 만들기
    83. 텍스트 검증 PNG 생성하기
    84. EAN-13 바코드 생성기 구현하기
    85. SQLite 데이터베이스에서 영화 정보 읽어들이기
    86. SQLite 데이터베이스에 영화 정보 삽입하기
    87. SQLite 데이터베이스에서 영화 이미지 다루기

    11장. 암호화

    88. 카이사르 암호법을 적용한 프로그램 구현하기
    89. 비즈네르 암호법을 적용한 프로그램 구현하기
    90. 베이스64 인코딩을 적용한 프로그램 구현하기
    91. 사용자 자격을 증명하는 인증 프로그램 구현하기
    92. 파일 해시를 계산하는 프로그램 구현하기
    93. 파일 암호화 및 복호화 프로그램 구현하기
    94. RSA 암호화로 파일 서명 및 변조 여부 확인 프로그램 구현하기

    12장. 네트워킹과 서비스

    95. 호스트의 IP 주소 찾기
    96. 피즈-버즈 게임을 위한 클라이언트-서버 프로그램 구현하기
    97. 비트코인 환율 표시 프로그램 구현하기
    98. IMAP을 이용해 이메일 가져오기
    99. 텍스트를 임의의 언어로 번역하기
    100. 사진에서 얼굴 감지하기

    저자소개

    마리우스 반실라(Marius Bancila) [저] 신작알림 SMS신청 작가DB보기
    생년월일 -
    출생지 -
    출간도서 0종
    판매수 0권

    15년 동안 산업과 금융 솔루션을 개발해 온 소프트웨어 엔지니어다. 『모던 C++ 프로그래밍 쿡북』(에이콘, 2019)을 썼으며, 주로 마이크로소프트(Microsoft)의 기술을 바탕으로 C++와 C#을 이용한 데스크톱 애플리케이션을 개발하고 있다.
    자신의 전문 기술 지식을 다른 사람들과 공유해 온 열정을 인정받아 10년이 넘는 기간 동안 마이크로소프트 MVP로 활동하고 있다. 트위터 계정 @mariusbancila를 통해 그에게 연락할 수 있다.

    저자의 다른책

    전체보기
    생년월일 -
    출생지 -
    출간도서 0종
    판매수 0권

    글로벌 반도체 기업의 연구소에서 음성 인터페이스와 자율 주행 자동차 등의 인공지능 개발 프로젝트에 참여해 왔다. 현재는 캐나다 밴쿠버에 거주하며 대규모 웹 서비스 개발과 운영에 참여하고 있다

    이 상품의 시리즈

    프로그래밍 언어 시리즈(총 32권 / 현재구매 가능도서 32권)

    펼쳐보기

    이 책과 내용이 비슷한 책 ? 내용 유사도란? 이 도서가 가진 내용을 분석하여 기준 도서와 얼마나 많이 유사한 콘텐츠를 많이 가지고 있는가에 대한 비율입니다.

      리뷰

      0.0 (총 0건)

      구매 후 리뷰 작성 시, 북피니언 지수 최대 600점

      리뷰쓰기

      기대평

      작성시 유의사항

      평점
      0/200자
      등록하기

      기대평

      10.0

      교환/환불

      교환/환불 방법

      ‘마이페이지 > 취소/반품/교환/환불’ 에서 신청함, 1:1 문의 게시판 또는 고객센터(1577-2555) 이용 가능

      교환/환불 가능 기간

      고객변심은 출고완료 다음날부터 14일 까지만 교환/환불이 가능함

      교환/환불 비용

      고객변심 또는 구매착오의 경우에만 2,500원 택배비를 고객님이 부담함

      교환/환불 불가사유

      반품접수 없이 반송하거나, 우편으로 보낼 경우 상품 확인이 어려워 환불이 불가할 수 있음
      배송된 상품의 분실, 상품포장이 훼손된 경우, 비닐랩핑된 상품의 비닐 개봉시 교환/반품이 불가능함

      소비자 피해보상

      소비자 피해보상의 분쟁처리 등에 관한 사항은 소비자분쟁해결기준(공정거래위원회 고시)에 따라 비해 보상 받을 수 있음
      교환/반품/보증조건 및 품질보증 기준은 소비자기본법에 따른 소비자 분쟁 해결 기준에 따라 피해를 보상 받을 수 있음

      기타

      도매상 및 제작사 사정에 따라 품절/절판 등의 사유로 주문이 취소될 수 있음(이 경우 인터파크도서에서 고객님께 별도로 연락하여 고지함)

      배송안내

      • 인터파크 도서 상품은 택배로 배송되며, 출고완료 1~2일내 상품을 받아 보실 수 있습니다

      • 출고가능 시간이 서로 다른 상품을 함께 주문할 경우 출고가능 시간이 가장 긴 상품을 기준으로 배송됩니다.

      • 군부대, 교도소 등 특정기관은 우체국 택배만 배송가능하여, 인터파크 외 타업체 배송상품인 경우 발송되지 않을 수 있습니다.

      • 배송비

      도서(중고도서 포함) 구매

      2,000원 (1만원이상 구매 시 무료배송)

      음반/DVD/잡지/만화 구매

      2,000원 (2만원이상 구매 시 무료배송)

      도서와 음반/DVD/잡지/만화/
      중고직배송상품을 함께 구매

      2,000원 (1만원이상 구매 시 무료배송)

      업체직접배송상품 구매

      업체별 상이한 배송비 적용