능히 해낼 수 있다
230118 알고리즘, 자료구조: 왜 배워야 하는가? 편 본문
반응형
✍️✍️✍️ 위 글은 작성자의 지식습득에 따라 추후 퇴고 될 수 있음을 알려드립니다(피드백 환영).
오오늘은 자료구조와 알고리즘 수업 첫 날...
작살 팩트를 날려주셨던 행동파 멘토님께서
알고리즘과 자료구조 강사님으로서도 함께 해주신다는 소식을 들었다.
합류하신 이래로 멘토링만 해주셨었고, 강의를 듣는 것은 처음이었기 때문에
아아주 살짝 멘토님에 대한 긴장 반, 수업주제에 대한 긴장 반으로 첫 수업을 듣게 되었다.
하지만 생각보다 멘토님이 긴장하시기도했고? 간간히 해주시는 찰떡콩떡한 예시들 덕분에
비록 쉬는시간은 한 번 뿐이었지만...⭐
힘들긴했지만서도 나름 집중해서 들을 수 있었다.
우선 오늘 수업을 살짝 정리한 내용을 적어보려한다.
개요
- 자료 구조 공부의 필요성
- 자료구조와 알고리즘
- 시간복잡도
- 공간복잡도
- 빅오표기법
자료구조 공부의 필요성
1. 코드를 엉망으로 만드는 대부분의 이유는 잘못된 자료구조를 선택했기 때문
2. 기술인터뷰에 필요할 수도 있음
∴ 좋은 자료구조란 무엇이고, 알고리즘은 무엇인지 알기위해!
자료구조란?
데이터가 저장되는 방법/규칙, 자료의 집합, 논리적으로 정의된 규칙에 의해 원소들이 나열되어 이에대한 처리를 효율적으로 수행할 수있도록 자료를 구분하여 표현하는 것을 자료구조라 한다.
우리가 변수를 담기도하고 사용하기도 하는데, 이 행위의 과정을 제대로 알기 위해 자료구조 공부를 한다고 생각하면 된다.
어렵게 접근하려하지 말고 자료구조도 하나의 도구로 생각하면서 어떤 것이 더 효율적인지 생각하는 방향으로 접근해보자
시간·공간복잡도
데이터 저장에 있어 무엇이 더 효율적인지 결정하기 위한 기준을 잡는데 활용한다
시간 복잡도: 얼만큼 더 빠르게 개발, 및 전환 처리를 할 수 있는지, 데이터양이 얼마나 들어가든 상관이 없음 => 요즘의 척도 앞으로 이 기준에 대해 더 공부하게 될 예정
공간 복잡도: 메모리 공간을 얼마나 효율적으로 활용하는지
=> 예전의 척도. 그렇다고해서 이 복잡도를 활용하는 것이 오답은 아님. 상황에 따라 맞는 방법을 선택하는 것이 중요.
시간복잡도
알고리즘을 수행하는데 걸리는 시간 및 단계 알고리즘을 해석하는데 거쳐간 단계라고 생각하면 쉽다.
=> 과정의 시간이 짧을 수록 좋다는 뜻
공간복잡도
알고리즘을 수행하는데 필요한 메모리의 양을 생각하고 구조를 짜야함.
좋은 공간 복잡도는, 데이터를 저장공간에 담을 때, 그 데이터 양에 따른 공간이 가장 좋은 공간 복잡도
이게 무슨 엄마요리의 적당히 같은 느낌
추상자료형
자료들과 그 자료들에 대한 연산들을 명시한 것
1. 캡슐화: 정보은닉가능
2. 다형성: 내부구현을 사용자에게 맡김으로서 사용의 유연함 제공
3. 구현방법 명시하지 않음: 자료구조와 다르게 , 구현방법을 명시하지않고 있음
우선 최종 느낀점을 말하자면, 쉽지 않았다!
그리고 약간의 충격? 왜냐면, 독학하던 당시엔 개발에 대한 내 생각과 방향이
기술구현에만 집중되어있었기도 했고, 지식을 쌓아야하는 이유를 느끼지 못했기 때문이었다.
하지만 수업을 듣고나니, 왜 최적화에 대해 고민해야하는지,
왜 메모리를 고려해야하는지에 대한 이유를 어렴풋이 알 것도 같다.
수업전에 한 번 더 복습겸 디버깅도해보면서 콜스택이 돌아가는 상황도 한 번 더 보고
다음 수업을 맞이해야겠다
반응형
'개발🌐 > CS지식' 카테고리의 다른 글
230316 CS지식 습득을 위한 메모: 싱글톤 패턴 편 (0) | 2023.03.16 |
---|---|
230130 컴퓨터지식: 프레임워크와 라이브러리 차이 (0) | 2023.01.30 |
230127 네트워크: 컴퓨터의 이해 소프트웨어공학 배경지식 편 (0) | 2023.01.27 |
230125 개발지식: JSON 편 (0) | 2023.01.25 |
230125 알고리즘, 자료구조: 배열, 연결리스트, 큐, 스택 편 (0) | 2023.01.25 |