Home Forums Forums US Life 다음 5개함수 중 가장 잘 쓴 함수라고 생각되는 함수는? 이유는? 틀렸다고 생각되는 함수는? 리스트의 뒤에서 N번째 노드 지운 리스트 리턴하기
다 잘 실행된다고 자평하시니 난감이네요.
버그들
– 1, 2, 3, 4는 head에 null을 넣으면 크래시하는 버그 있고
– 1, 2, 3, 4는 list에 3개가 있는 상황에서 7번째 것 삭제하려고 호출하면 모두 크래시 (n = 10000 이렇게 넣어볼 것)
– 2, 3, 4는 n에 음수 넣으면 크래시하는 버그 있고
– 1, 5는 메모리를 추가 할당한 후 release를 안 하는 memory leak 버그가 있고
– 1, 2, 3, 4, 5 전부 다, 삭제된 노드를 release하지 않는 memory leak 버그가 있어요.
– 3은 void로 정의되어 있는데 값을 리턴해서 컴파일이 안 되는 버그가 있고요
– 4번은 head가 삭제 대상일 경우 삭제가 되지 않는 논리 버그가 있고요.
– 5번은 첫번째 while 조건이 잘못돼 있어요. n이 너무 클 경우 slow, fast 간격이 n만큼 유지가 안 돼요.
디자인
리턴값 디자인이 ListNode*와 void 사이를 오가고 있는데 뭐가 좋을지 아직 못 정했나요? 이 함수의 경우 chained 형태로 쓰일 수 있으므로 ListNode* 로 디자인하는 게 나아요. 즉 1, 2, 5 형태가 좋아요.
조언
5가지 해보는데 시간 많이 걸렸죠? 전체적으로 님이 어려움을 겪는 이유에 대해 남들이 다 연구해서 해결책을 내놓은지 오래됐습니다. TDD를 배우세요. 메모리 릭에 대해서는 memory leak을 검출하는 소프트웨어 사용도 배우시고요.
지금 c++ 시작하시는 분이면 data structure in c++, algorithm in c++, design pattern에 대한 책을 읽고 이미 검증된 코드를 암기하다시피 반복하여 손에 익히시는 게 좋습니다. 눈으로 이해하고 ok 하지 말고 직접 타이핑 해서 넣을 수 있을 정도로 말입니다.