2024. 1. 9. 21:20ㆍ내일배움캠프
1월9일
1월 16일까지 일주일간의 팀 프로젝트기간이 시작되었다.
오늘은 첫날이라 무척이나 바빴는데 팀과제를 위해 팀원들과의 회의 뿐만 아니라
알고리즘이 뭔가?에 대해서 배웠기도 했고
우리가 많이 사용하는 배열,리스트,연결리스트에 대해서 배우기도 했다.
그렇기에 오늘 TIL은? 알고리즘이 무엇인가와 배열,리스트,연결리스트에 대해서
이미 알고있던 내용도 있겠지만 몰랐던 내용들까지 이번 기회에 정리해 보도록 하자
알고리즘
알고리즘?
알고리즘은 특정 문제를 해결하기 위해 기술한 일련의 명령문이라고 한다.
프로그램은 이 알고리즘을 컴퓨터가 이해하고 실행할 수 있는 특정 프로그래밍 언어로 표현한 것이다.
Program = 알고리즘 + data Structures
알고리즘의 요건
•완전성과 명확성
- 수행 단계와 순서가 완전하고 명확하게 명세되어야 함
- 순수하게 알고리즘이 지시하는 대로 실행하기만 하면 의도한 결과가 얻어져야 함
•입력과 출력
- 입력 : 알고리즘이 처리해야 할 대상으로 제공되는 데이터
- 출력 : 입력 데이터를 처리하여 얻은 결과
•유한성
- 유한한 단계 뒤에는 반드시 종료
배열 / 리스트 / 연결리스트
배열
배열은 동일한 데이터 유형을 가지는 데이터 요소들을 한 번에 모아서 다룰 수 있는 구조다
배열의 특성을 꼽자면
1. 순차적 메모리 할당방식
2. 인덱스, 원소 쌍의 집합
3. 원소들이 모두 같은 타입,같은 크기
4.배열을 이용해 많은 수의 변수를 하나의 문장으로 선언이 가능
5.배열 인스턴스의 멤버변수 Length에는 배열의 길이 정보가 저장되어 있다.
즉!
배열 = 여러개의 저장공간이 줄을 지어 있는 구조라고 할 수 있다.
int[] ref = new int[5] // 정수 데이터 형식의 ref라는 이름의 5칸짜리 배열을 만들어라!
배열은 이렇게 만들수가 있는데 뜻을 풀이해보면 이렇다.
리스트
리스트는 배열과 비슷하다 하지만 가장 큰 차이점이라고 하면
리스트는 동적으로 크기를 조절할 수 있는 배열이라는 것이다. (크기가 넘어가면 2배의 크기로 재할당)
배열과 리스트의 차이점을 보자
배열 vs 리스트
배열의 장점
연속된 메모리 공간에 할당되어 접근이 빠르고
참조를 위한 추가 메모리 할당이 필요없다.
단점
삽입 / 삭제 시 뒤에 요소들을 이동해야 해서 비효율적이며
크기 변경 불가
메모리 재할당 불가능
리스트의 장점
삽입 / 삭제 시 전후 노드의 참조 관계만 수정하면 되기 때문에 배열보다 비교적 효율적이다
메모리 재사용 가능
단점
참조를 위한 메모리가 필요하고
배열보다 실행속도가 느리다.
배열과 리스트는 비슷하지만 여러가지 장단점이 있다.
내가 상자에 집어넣을 물건의 갯수가 확실하고 더 이상 상자에서 뺴서 없애지 않는다면?
배열을 사용하면 좋고
내가 이 상자에 몇개를 넣을지 또 몇개를 삭제할지? 확실하지 않다면 리스트를 사용하고
이렇게 필요에 맞게 배열과 리스트 중 잘 선택을 하는게 좋다.
연결리스트
각 노드가 데이터와 포인터를 가지고 있으면서 노드들이 한 줄로 쭉 연결되어 있는 방식을 말한다.
연결리스트에는 단일 연결 리스트와 이중 연결 리스트가 있는데
단일 연결 리스트
하나의 링크 필드를 가진 노드들이 모두 자기 후속 노드와 연결되어 있는 리스트를 말한다.
마지막 링크필드는 리스트의 끝을 표시하는 null값을 가지고 있다.
이중 연결 리스트
하나의 노드가 데이터의 양옆으로 링크를 가지고 있다
이중 연결 리스트는 그 특징 떄문에 양방향으로 탐색이 가능해서 선행 노드를 검색하기 쉽다는 장점이 있다.
확실히 TIL을 작성하고나면 오늘 공부했던걸 마지막으로 한번 더 복습하는 느낌이라서
좀 오랫동안 기억에 남는것 같다. 공부했던 내용에 대해서 다시 찾아보기도 하고
이렇게 이해했는데 잘 이해한게 맞나? 싶어서 다시 한번 찾아보기도 하고...
이상으로 1월 9일 TIL을 마치도록 하겠다.
'내일배움캠프' 카테고리의 다른 글
240111-TIL (0) | 2024.01.11 |
---|---|
240110-TIL (0) | 2024.01.10 |
240108-TIL (0) | 2024.01.08 |
240105-TIL (0) | 2024.01.05 |
240104-TIL (0) | 2024.01.04 |