능히 해낼 수 있다

230118 알고리즘, 자료구조: 왜 배워야 하는가? 편 본문

개발🌐/CS지식

230118 알고리즘, 자료구조: 왜 배워야 하는가? 편

roni_eo 2023. 1. 18. 17:29
반응형

✍️✍️✍️ 위 글은 작성자의 지식습득에 따라 추후 퇴고 될 수 있음을 알려드립니다(피드백 환영).

 


오오늘은 자료구조와 알고리즘 수업 첫 날...

 

 

220103 STUDY - 멘토링과 작살팩트🏹

✍️✍️✍️ 위 글은 작성자의 개인적인 경험과 생각이니 편하게 읽어 주시면 감사드리겠습니다. 지난 22년 12월 스터디를 5번정도 진행하고 6번이 되던 날. 5번의 과정동안 약간의 삐걱 거림이

ronieo.com

작살 팩트를 날려주셨던 행동파 멘토님께서

알고리즘과 자료구조 강사님으로서도 함께 해주신다는 소식을 들었다.

 

합류하신 이래로 멘토링만 해주셨었고, 강의를 듣는 것은 처음이었기 때문에

아아주 살짝 멘토님에 대한 긴장 반, 수업주제에 대한 긴장 반으로 첫 수업을 듣게 되었다.

 

하지만 생각보다 멘토님이 긴장하시기도했고? 간간히 해주시는 찰떡콩떡한 예시들 덕분에

비록 쉬는시간은 한 번 뿐이었지만...⭐

힘들긴했지만서도 나름 집중해서 들을 수 있었다. 

우선 오늘 수업을 살짝 정리한 내용을 적어보려한다.


개요

  • 자료 구조 공부의 필요성
  • 자료구조와 알고리즘
    • 시간복잡도
    • 공간복잡도
  • 빅오표기법

자료구조 공부의 필요성

 
1. 코드를 엉망으로 만드는 대부분의 이유는 잘못된 자료구조를 선택했기 때문
2. 기술인터뷰에 필요할 수도 있음

∴ 좋은 자료구조란 무엇이고, 알고리즘은 무엇인지 알기위해!
 

자료구조란?

데이터가 저장되는 방법/규칙, 자료의 집합, 논리적으로 정의된 규칙에 의해 원소들이 나열되어 이에대한 처리를 효율적으로 수행할 수있도록 자료를 구분하여 표현하는 것을 자료구조라 한다.
우리가 변수를 담기도하고 사용하기도 하는데, 이 행위의 과정을 제대로 알기 위해 자료구조 공부를 한다고 생각하면 된다.
어렵게 접근하려하지 말고 자료구조도 하나의 도구로 생각하면서 어떤 것이 더 효율적인지 생각하는 방향으로 접근해보자

시간·공간복잡도

 
데이터 저장에 있어 무엇이 더 효율적인지 결정하기 위한 기준을 잡는데 활용한다
시간 복잡도: 얼만큼 더 빠르게 개발, 및 전환 처리를 할 수 있는지, 데이터양이 얼마나 들어가든 상관이 없음 => 요즘의 척도 앞으로 이 기준에 대해 더 공부하게 될 예정
공간 복잡도: 메모리 공간을 얼마나 효율적으로 활용하는지
=> 예전의 척도. 그렇다고해서 이 복잡도를 활용하는 것이 오답은 아님. 상황에 따라 맞는 방법을 선택하는 것이 중요.

시간복잡도

알고리즘을 수행하는데 걸리는 시간 및 단계 알고리즘을 해석하는데 거쳐간 단계라고 생각하면 쉽다. 
=> 과정의 시간이 짧을 수록 좋다는 뜻 

공간복잡도

알고리즘을 수행하는데 필요한 메모리의 양을 생각하고 구조를 짜야함.
좋은 공간 복잡도는, 데이터를 저장공간에 담을 때, 그 데이터 양에 따른 공간이 가장 좋은 공간 복잡도
 
 
이게 무슨 엄마요리의 적당히 같은 느낌

추상자료형

자료들과 그 자료들에 대한 연산들을 명시한 것
1. 캡슐화:  정보은닉가능
2. 다형성: 내부구현을 사용자에게 맡김으로서 사용의 유연함 제공
3. 구현방법 명시하지 않음: 자료구조와 다르게 , 구현방법을 명시하지않고 있음

 


우선 최종 느낀점을 말하자면, 쉽지 않았다!

그리고 약간의 충격? 왜냐면, 독학하던 당시엔 개발에 대한 내 생각과 방향이

기술구현에만 집중되어있었기도 했고, 지식을 쌓아야하는 이유를 느끼지 못했기 때문이었다.

 

 하지만 수업을 듣고나니, 왜 최적화에 대해 고민해야하는지,

왜 메모리를 고려해야하는지에 대한 이유를 어렴풋이 알 것도 같다.

수업전에 한 번 더 복습겸 디버깅도해보면서 콜스택이 돌아가는 상황도 한 번 더 보고 

다음 수업을 맞이해야겠다

반응형