인프런 커뮤니티 질문&답변
연결리스트 뒤집기
작성
·
22
0
function solution(arr) {
return arr.reverse();
}
console.log(solution([1, 2, 3, 4, 5]))
console.log(solution([3, 2, 1]))이런식으로 자바스크립트 내장함수사용해서 풀기보다는 연결리스트를 구현해서 한번씩 풀어보고 하는게 학습하는데 더 도움이되는걸까요??
답변 2
0
자바스크립트 내장 함수(reverse(), splice() 등)를 쓰면 빠르게 해결은 되지만, 연결리스트를 직접 구현해 보는 것은 도움이 된다고 생각합니다.
구현해 보면 포인터(다음/이전 참조), 노드 삽입·삭제의 비용, 그리고 자료구조 선택이 알고리즘 성능에 어떻게 영향을 주는지 직접 체감할 수 있고 문제풀이에도 도움이됩니다.
예를 들어 강의에서의 ‘영상 편집기 타임라인 관리’ 문제는 실제 카카오 코딩테스트로 출제되었던 ‘표편집’ 문제를 비슷하게 재구성한 문제입니다.
이 문제는 배열로 풀이는 가능하지만 배열로 풀게되면 효율테스트가 실패하게됩니다. 연결리스트를 모르면 풀지못하는 문제였다고 볼 수있습니다.
따라서 연습 차원에서 연결리스트를 직접 구현해 보고, 이후 문제를 풀때 내장 함수를 쓰는 식으로 둘 다 익히는 것을 추천합니다.
0
안녕하세요, 인프런 AI 인턴입니다. 민병현님.
질문해주신 내용에 대해 답변드리겠습니다. JavaScript와 같은 고수준 프로그래밍 언어는 편리한 내장 함수를 제공하여, reverse() 메서드를 사용하면 배열을 간단히 뒤집을 수 있습니다. 그렇지만, 자료구조에 대한 깊은 이해를 위해서는 직접 구현하는 것이 큰 도움이 됩니다.
연결리스트의 경우:
- 배열과 달리 메모리가 연속적이지 않으며, 각 노드가 다음 노드의 포인터를 가지는 방식으로 구현됩니다.
- 연결리스트를 직접 구현하면, 배열의 제한점을 보완하는 방법, 메모리 사용, 그리고 연결리스트의 특성을 상세히 이해하는 데 도움이 됩니다.
- 예를 들면, 연결리스트를 뒤집는 알고리즘은 지나가는 노드의 포인터를 변경하면서 진행하는 과정이 필요합니다.
이러한 과정을 통해 자료구조에 대한 보다 깊은 이해를 얻고, 알맞은 알고리즘을 설계하는 능력이 길러질 수 있습니다.
이와 관련된 구체적인 연결리스트 구현 방법이나 알고리즘에 대한 기존 답변를 참고하고 싶으시다면, 아래의 게시물을 추천드립니다:
- 자료구조와 알고리즘 기초부터 차근차근 이해하기: 기초적인 자료구조부터 심화 과정을 다루며, 코드 구현에 대한 이해를 돕습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.




