할머니도 이해하는 자료구조, 알고리즘
6. 정렬(sort)
정렬된 배열 이 뜻은 배열과 거의 같다. 유일한 차이는 값이 항상 순서대로있어야 한다는 것에서 다르다! 그러니까 값을 추가할 때마다 적절한 셀에 넣어 배열의 값을 정렬된 상태로 유지한다. 하지만 배열은 이것과 달리 값의 순서는 고려하지 않고 배열의 끝에 값을 추가 할 수 있다. 여기서 75를 일반적인 배열에 삽입한다고 가정하면 아래와 같이 된다. 배열 파트에서 설명 했듯이 컴퓨터는 맨 끝에 삽입하는 것이라면 한 단계만에 처리 할 수 있다. 하지만 정렬된 배열에서는 값을 오름차순으로 유지하려면 적절한 위치에 75를 삽입해야 한다. 위에 그림 처럼 75를 알맞는 위치에 넣기 위해선 한 단계로는 부족하다 먼저 75가 들어갈 올바른 위치를 찾는 것이 먼저고 이후 다른 값들을 옮기는 작업을 해야한다. 그러면 단계..
5. 알고리즘이 중요한 이유
알고리즘은 어렵지 않다. 계속 알고리즘 알고리즘 하니까 어렵게 느껴지기도 하는데 실상 어렵지는 않다. 알고리즘을 바꿔 말하면 문제를 해결하는 절차로 바꿀 수 있다. 예를 들어서 야식으로 라면을 먹는다고 생각해보자. 라면 만드는 법. 냄비를 집는다. 냄비에 물을 채운다. 냄비를 불에 올린다. 끓기 전에 스프를 넣는다. 물이 끓으면 면을 넣는다. 2~3분 정도 기다린 후 먹는다. 컴퓨팅 관점에서 알고리즘은 특정 연산을 풀어나가는 절차를 뜻한다. 지금까지 포스팅한 내용들은 읽기, 쓰기, 검색, 삭제라는 네 가지 핵심 연산을 분석했고 이제는 두 가지 이상의 방법으로 풀 수도 있다는 것을 포스팅 하려한다.
4. 집합
Set - 집합 배열과 비슷하지만 많이 다른 자료 구조인 집합을 한번 봐보자. 집합은 중복을 허용하지 않는 자료구조다. 중복을 허용하지 않는 다는 말은 말 그대로 중복값을 반영 하지 않는다는 말과 같다. 실제로 집합의 종류는 다양하지만 이 게시글에선 배열 기반 집합만을 다룰 것이다. 배열 기반 집합과 일반 배열과의 유일한 차이점은 바로 중복값을 허용하지 않는다는 것이다. 다시말하면 집합은 중복을 허용하지 않는다는 간단한 제약을 받는 배열이다. 하지만 이런 제약으로 인해 실제로 앞서 설명한 네 연산중 하나에서 집합의 효율성이 매우 달라진다. 이런 배열 기반 집합으로 읽기, 검색, 삽입, 삭제 연산을 수행해 보자! 읽기📃 먼저 읽기 부분은 배열 읽기와 완전히 똑같다. 컴퓨터가 특정 인덱스에 들어 있는 값을 ..
3. 배열
Array (배열) 언어를 배우다보면 무조건 등장하는 개념이 나왔다. 완전 처음 언어를 공부하다가 어려움을 느끼게 되는 구간이라 볼 수 있다. 마치 초급 던전 보스처럼 배열은 cs에서 가장 기초적인 자료 구조 중 하나다. 이것은 단순한 데이터 원소들의 리스트이기도 하다. 배열의 첫번째 인덱스는 0번째임을 다들 알 것이다. 간단한 예시로 MT를 가는데 필요한 술을 사려 마트에 들렀다고 가정해보자. array = ["진로", "카스", "테라", "위스키"] 배열에 들어있는 네 가지 문자열은 마트에서 살법한 주류들이다. 배열의 인덱스는 특정 데이터가 배열의 어디에 있는지 알려주는 숫자이다. 0번째부터 시작하니 0 , 1, 2, 3 으로 진행됨을 알 수 있다 그리고 각 요소(진로, 카스 등등)들은 0, 1 ...
1. 인트로
내가 진짜 잘하고 싶어서 따로 정리하는 글. 그냥 문제만 많이 풀면 알아서 된다. 이런 말은 항상 들었지만 정작 나는 동의할 수 없었다. 왜냐면 먼저 문제 접근 자체를 하지 못하는 경우가 많았다. 특히 수학적인 발상을 떠올리는 것이 힘들었다. 그래서 따로 수학공부도 병행을 하고 있지만 아직까지는 멀었다는 느낌이 드는건 어쩔 수 없나보다. 백준 같은 문제풀이 사이트에서 문제를 풀고는 있지만 이게 맞는건가 싶고 남의 코드를 보면서 그 방식을 "외우는" 공부법을 진행하는 터라 갈증이 해소되지 않았다. 그리고 고교때도 수학 공부를 외우듯이 하는 버릇이 있었는데 하면 할 수록 수렁에 빠지는 듯한 기분이 드는 것을 지울 수가 없었다. 지금이 딱 그런 상황이다. 이대로는 안되겠다 싶어 내가 지금 당장 이해할 수 있는..