henongj   3년 전

이 문제를 풀 떄 제가 M, N을 받아 M개중 N개를 고르는 코드를 구현한 적이 없어서 

경우의 수 구현 방법을 구글에 검색했습니다.

하나는 재귀호출을 이용한 구현이었고 

다른 하나는 STL prev_permutation , next_permutation을 사용하는 방법이었습니다. 

일단 STL 가져다 썼습니다

그런데 문득 STL에 의존적이란 생각이 들었습니다. 

나중에 C++ 외의 언어도 잘 다루고 싶은데

제대로 구현한 정렬도 퀵정렬 하나고 큐, 스택, 우선순위 큐 모두 STL에서 가져다 써서 문제를 풀고 있어요.

아직 걸음마 수준인데 편법으로 가는게 아닌가 의문이 듭니다.


자료구조나 알고리즘을직접 하나하나 구현해서 실력을 늘리는게 좋을까요

아니면 문제를 어떻게 풀지 생각하고 구현중심으로 STL에 능숙해지는게 좋을까요?

pl0892029   3년 전

짤줄 알면 안짜도 됩니다.

짤줄 모르면 짜는게 좋습니다.

sait2000   3년 전

목적이 기본적인 자료구조 알고리즘 공부냐 아니면 좀 "이 바닥" 문제 풀이냐에 따라 다를 거 같네요. 문제 풀이 하는 관점에서 제 의견은 아래 정도입니다.

next_permutation 정도는 딱히 안 짜봐도 상관없다고 생각합니다. 알면 좋은데 막 중요한 건 아닌 것 같습니다.

정렬은 중요한 건 맞는데 그래도 딱히 짤 필요는 없는 것 같습니다. 알고리즘 문제를 푸는 거면 비교 기반 O(n log n) 정렬은 내장 함수를 쓰면 해결됩니다.

자료구조는 *각 자료구조의 특성을 어느정도 다 이해한다는 가정 하에* 안 짜봐도 상관없다고 생각합니다. 즉, 각 자료구조가 어떤 연산을 "말이 되는 시간에" 할 수 있는지 그런 거요. 위에 두개는 어떻게 동작하는지 몰라도 문제를 푸는데에는 그다지 지장이 없을 것 같은데, 자료구조는 뭐가 다른지 이해를 못 하고 써버리는 경우가 있어서 그런 일이 안 일어날 정도로만 알면 된다고 생각합니다.

댓글을 작성하려면 로그인해야 합니다.