데이터 구조의 중요성


Q. 데이터구조가 왜 중요할까요?
A. 데이터구조를 잘 설계한다면, 서비스의 규모가 커졌을 때도 서비스가 정상적으로 작동하도록 할 수 있습니다.(확장가능성)

영국의 컴퓨터과학자인 “데이비드 휠러” 는 이렇게 말했습니다.

“컴퓨터 과학의 모든 문제는 새로운 차원에서의 접근 방식으로 해결될 수 있다.
이 말을 풀이해보면 아마도 문제가 발생했을 때, 접근방식을 달리하는 것만으로도 문제를 해결 할 수 있다는 뜻일 겁니다.

Q. 새로운 차원에서 접근방식이 무엇일까요?
A. 컴퓨터과학에서 접근방식이라하면, 데이터를 주고받는 방식과 데이터를 저장하는 방식이 될 것입니다. 프로그래밍을 한다는 것은 결국 데이터를 어떻게 지지고 볶을지에 대해서 이야기하는 것이니까요. 내가 원하는 시간에 원하는 형태로 연산하거나 저장하는 것이라고 생각합니다.

그러므로 데이터 구조가 중요한 이유는 프로그래밍의 시작은 데이터를 어떻게 저장할지 고민하는 것이 될 것이고, 그것의 근간이 “데이터 구조” 이므로 데이터 구조에 대해서 익히는 것은 중요하다고 생각합니다.

데이터 구조 + 알고리즘 = 프로그램


Q. 데이터 구조와 알고리즘은 무엇일까요?
A. “문제를 해결하기 위한 패턴” 입니다. 데이터 구조는 ‘데이터 저장’ 일 것이고, 알고리즘은 ‘데이터 연산’ 이라고 생각합니다. 예를 들면, “배달의 민족” 앱을 보자면, 고객의 정보와 요식업체의 정보를 어떻게 저장할 것인지 고민하는 것은 데이터 구조를 생각하는 것일 겁니다. 주문요청, 주문취소 그리고 주문내역과 같은 것들은 저장된 데이터에 대해서 어떻게 가공할지에 대한 연산 영역이라고 생각합니다.

Q. 데이터 구조와 알고리즘을 왜 배워야 할까요?
A. 책에서는 이렇게 말하고 있습니다.

“우리가 데이터 구조의 구현에 대해 배워야 할 이유는 무엇인가? 그것은 데이터 구조에 대한 명확한 이해 없이는 다양한 데이터 타입의 장단점을 알 수 없고, 어떤 상황에서 어떤 데이터 구조를 사용해야할지 판단할 수 없으며, 결국 이것이 프로그램을 구현하려 할 때 문제가 되기 때문이다.
-스위프트 자료구조와 알고리즘 p31-

위 말에 100% 동감합니다. 개인적으로 남이 작성한 코드를 따라하고 배끼기만 하면서 구현했었던 적이 있습니다. 처음에는 그렇게 공부하는게 진도가 나가는 재미에 그리고 할 수 있는 것들이 많아지는 느낌에 그렇게 공부했습니다. 그러다가 제가 원하는 것을 만들고자 할 때, 문제에 부딪혔습니다. 어떤 데이터 구조를 사용해야 가장 적합할지 정보가 없으니, 그저 예전에 작성했던 코드를 사용하게 되더라구요. 당장 커스터마이징 하기 어렵고, “내가 짜는 코드가 최적화된 것일까?” 라는 질문에 대답할 수 없어서 이 책을 읽게 된 것입니다. 코딩테스트도 물론 잘보고 싶은 마음도 있었지만, 그것보다는 제 코드에 이유를 찾고 싶어서 이 책을 찾았던 이유가 더 큽니다.

profile
iOS Dev

관심 있을 만한 포스트

0개의 댓글