그 책 기대되네요 ㅋㅋㅋ
"대상 독자는 이런 문제를 거의 안 풀어본 사람들 또는 A+B정도만 풀 수 있는 사람들" 이라는 전제에는 맞지 않지만
개인적인 경험을 바탕으로 부끄럽지만 몇 자 적어봅니다...
저 같은 경우에는 JM Book 에서 다루지 않은 내용들을 설명하는 책이 있었으면 좋겠다는 생각을 합니다.
예들 들면, 다음과 같은 주제들입니다.
- Heavy-Light Decomposition
- Convex Hull Trick
- MCMF
이 외에도 PS 를 잘하기 위해서는 알아야 할 JM Book 에서 다루지 않은 많은 주제들이 있을텐데,
(실력이 좋지 않다보니 무얼 어디까지 알아야되는지 정의조차 잘 안되는..)
저 같은 경우에는 연습을 하면서 그 때 그 때 채워나가려고 노력중입니다만 시간도 많이 걸리고 쉽게 잘 되지 않습니다.
쓰시려고하는 책의 방향과는 정반대의 방향의 의견을 남긴 것 같지만 혹시나 하는 마음으로 도움이 될까 해서 남겨봅니다.
저는 재귀에 대한 내용을 튜토리얼부터 차근차근 자세하게 다뤘으면 좋겠습니다.
여러 알고리즘 책을 봤지만 JMBOOK을 포함한 대부분의 알고리즘 서적이 재귀를 적당히 다룰 줄 안다고 가정하고 시작하더라구요..
제가 문제를 풀어본 바로는 재귀 문제가 상당히 많은데
신입생들은 재귀에 많은 어려움을 가지는것 같습니다..
피보나치 재귀는 할줄 아는데
1,2,3 더하기 문제는 풀 줄 모르는.. (https://www.acmicpc.net/problem/9095)
재귀 함수를 구현하는 요령이나 몇가지 패턴에 대한 내용을 다뤘으면 합니다.
덧붙여서..
JMBOOK을 보다보면 STL 컨테이너나 함수를 사용한 코드를 종종 볼 수 있는데,
평소에 단순히 배열이나 간단한 구조체 정도만 사용하시던 분들에게는 좀 거북스러운(?) 코드로 보일 수도 있을 것 같아요
자료구조나 알고리즘, STL도 쓰신다고 하니 아마 이미 생각하고 계신 것 같은데,
정말 자주 사용하는 STL컨테이너, STL함수(vector, sort, ...)에 대한 내용도 책 초반부에서 접할 수 있다면 시작하시는 분들 입장에서는 큰 도움이 될 것 같네요
실제로, 저도 처음 시작하는 주변 친구들이나 후배들이 어떤 문제를 읽고 머리속으로는 '정렬해야겠다..'라는 논리를 떠올리면서도
정렬하는 코드를 어떻게 구현해야될지 몰라서 한참 검색하던중에 STL sort를 알려주면 대부분 정말 신기해하는 반응을 보였던 것 같네요
@jays
1. 컨벡스헐 트릭 : http://dyngina.tistory.com/28 (apio commando 문제 해법 설명인데 쉽게 잘 설명해놓았네요)
뿐만 아니라 동적계획법에서 특수한 경우에 적용되는 다양한 최적화에 대해서는 http://codeforces.com/blog/entry/8219 에 설명이 잘 되어있습니다.
2. HLD : http://theyearlyprophet.com/heavy-light-decomposit... (구종만님의 친절한 설명ㅎㅎ)
3. MCMF : 이건 음.. 쉽게 생각하면 유량이 최대화될 때, 가중치의 합이 최소 또는 최대(가중치에 다 -를 붙이고 결과에 - 한번 더)가 되게 하는 것인데... 저 같은 경우에는 문제로 직접 풀어보면서 익혔던 것 같습니다. 연습 문제는 아래와 같습니다.
1) https://algospot.com/judge/problem/read/CLEANING
2) 백준저지 1633번에 대한 제 풀이(아래 댓글을 보다보면 제가 그린 그래프 모델링이..) : https://www.acmicpc.net/board/view/1291 사실 dp로 쉽게 풀린다능...
3) https://www.acmicpc.net/problem/1657 그리드를 체스판으로 생각해서 정점을 이분그래프로 바꾸고 mcmf로 풀 수 있음. 그런데 원래 정해는 O(n^2 * 2^n) dp...
4) 2013 한국 icpc 인터넷 예선 I번 https://www.acmicpc.net/problem/8992 : 문제가 묻습니다. 너 mcmf 정의를 알고, 짤 줄 아니?
5) 이번 월파 C번.. 아이디어가 좀 필요해서 난이도가 있는 듯. https://www.acmicpc.net/problem/10786
다른 것들도 몇 개 더 있었는데 잘 떠오르지가 않네요! 하하....
사실 저도 어느 순간부터는 책을 읽어서 지식을 쌓아도 실력이 느는 게 느껴지지 않고, 연습을 해도 제자리인 것 같아서 고민이지만... 요즘은 워낙 블로그나 codeforces, topcoder에 좋은 글들이 많다보니, 처음 입문하시는 분들에 비하면 아무것도 아닌 것 같네요.
아무래도 제가 처음 입문할 때에는 동적계획법 점화식을 어떻게 하면 저렇게 딱딱 떠올리는지가 제일 힘들었던 것 같아요. 재귀 파트에서 메모이제이션 개념에 대해서 예제를 통해 쉽게 다루어주신다면 종만북을 읽을 때 많은 도움이 될 것 같습니다.
쉬운 재귀 문제들이 BOJ에 굉장히 많았던 것 같은데,
2차원 테이블을 이용한다거나, string을 좀 잘 써야한다거나.. 등등
몇 가지 부가적인 기술(?) 조차 필요하지 않는 정말 완전 재귀 입문과 같은 문제를
방금 아주 조금(..) 찾아봤는데,
1,2,3더하기, 부분집합의 합도 괜찮을 것 같아요 (부분집합의 합은 입문자에게 조금 어려울 수도 있을 것 같네요)
그리고, 별로 있지도 않은 제 경험상. 재귀함수를 처음 설계할 때 반환형이 있는것과 없는것에 따라서
처음 배우시는 분들이 좀 많이 어려워하는걸 봤었는데, 반환형이 없는 형태로 처음 시작할 때 좀 더 쉽게 이해했던 것 같아요
앞에서 언급드린 두 문제에 대한 코드로 예를 들자면,
# 1,2,3더하기
1. void type
2. int type
# 부분집합의 합
1. void type
2. int type
정도가 될 것 같네요.
댓글을 작성하려면 로그인해야 합니다.
baekjoon 8년 전 15
사실 제가 지난 2월부터 책을 쓰고 있는데... 여러분 의견이 궁금해서 글을 남겨봅니다.
책은 이번달 말까지 다 쓰고 올해 안에 출간하는게 목표입니다!
대상 독자는 이런 문제를 거의 안 풀어본 사람들 또는 A+B정도만 풀 수 있는 사람들이 대상입니다. 이 게시판을 보는 대부분 유저들은 대상이 아닐 수도요 ㅋㅋㅋㅋㅋㅋ
책 컨셉을 잡는게 가장 처음에 힘들었었는데요, JM북이 워낙 뛰어난 책이라, 알고리즘/자료구조에 관한 설명은 쓸게 하나도 없더라고요.
그래서 잡은 컨셉이 따라해보기? 같은 컨셉인데 ㅋㅋㅋㅋ 이걸 어떻게 생각하는지 궁금해서 글을 남겨봅니다.
댓글에 더 좋은 컨셉이 달리거나, 이걸 대체 왜 책으로 쓰냐... 싶거나 뭐 아무튼 더 좋은 생각이 나거나, 의견을 제시해주시면 그걸 반영해서 수정해보려고 합니다. 책 내용을 뒤집어 엎어도 이번달 내에는 다 써야하긴 하는데, 뒤집어 엎어도 그때까지 다 쓸 수는 있을 것 같습니다.
책은 프로그래밍 소개라던가 이런 부분을 빼면 프로그래밍 언어(C/C++/Java), STL, 자료구조, 알고리즘 등 총 7개 챕터로 구성되어져 있는데
ㅇㅖ를 들어 STL Stack을 설명한다하면
같은 형식이 될 것 같고
string을 설명한다고 하면
뭐 이런 식이 될거 같네요 ㅋㅋㅋㅋ
이런 컨셉?이나 이런 책에 대해서 어떻게 생각하나요?
게시판에 남기기 부끄럽거나 저한테 따로 연락주고 싶으면 admin@acmicpc.net 으로 메일 보내 주세요