목록My footPrints 🔥🔥🔥 (311)
Daehyunii's Dev-blog
9.1 삽입 정렬 소개 삽입 정렬이란, 배열의 왼쪽 끝의 숫자를 정렬이 끝났다고 간주한다. 그리고 아직 작업하지 않은 숫자 중에서 왼쪽 끝에 있는 숫자를 꺼내서 왼쪽에 있는 작업이 끝난 숫자와 비교한다. 왼쪽의 숫자가 크다면 두 개의 숫자를 바꾼다. 이 작업을 자신보다 작은 숫자가 나타나거나 왼쪽 끝에 도달할 때까지 반복하여 정렬하는 방법이다. 말 그대로 삽입 정렬은 가장 왼편의 값을 정렬이 완료되어 있는 값으로 보고 나머지 요소들을 하나씩 꺼내와 정렬되어 있다고 가정한 왼편의 요소들과 비교하여 정렬되어야 하는 위치에 삽입하는 방식이다. 의사코드 1. 배열의 두 번째 요소를 선택하여 반복을 시작한다.(왜냐하면 가장 앞에 있는 요소는 정렬이 완료되었다고 간주하기 때문이다.) 2. 그 다음 두 번째 요소를 ..
8.1 선택 정렬 소개 선택 정렬은 버블 정렬과 비슷하지만 약간의 정렬 방식에 차이점이 있다. 많은 스왑을 통해서 가장 큰 값을 맨 뒤에 위치시키는 대신, 한 번에 모든 요소를 비교하여 가장 작은 값을 맨 앞에 위치시킨다. 그리고 그 요소를 제외한 나머지 요소들을 다 비교하여 가장 그 중 가장 작은 값을 첫 번째에 정렬된 요소 다음에 위치시킨다. 즉 배열내의 요소들 중 최솟값을 찾아 마지막에 바꾸어 맨 앞에 정렬시킨다. 우선 비교를 해야 하기 때문에 비교해야 할 요소들 중 가장 앞에 있는 값을 최솟값으로 잡고 그 다음 요소들과의 비교를 통해 최솟값을 찾는다. 이렇게 찾은 최솟값은 배열의 맨 앞에 정렬시키고, 그 다음 루프에서는 제외시키고 나머지를 비교한다. 이 과정을 반복하여 정렬하는 방식이 선택 정렬이..
이번주는 알고리즘에 대해서 공부했다. 처음에 알고리즘이라는 단어를 딱 들었을때, 확 와닿는 느낌은 아니었다. 일상 생활속에서도 알고리즘이라는 용어는 많이 사용되고 있었으나 정확한 개념에 대해서는 몰랐다. 우선 알고리즘이라는 개념은 문제를 처리하는 일련의 과정을 일컫는 말이다. 이것을 컴퓨터 공학적으로 풀이해 보자면 프로그래밍과 관련된 해결해야 할 문제들을 처리하기 위한 과정이고 내가 지금 배우고 있는 내용을 토대로 생각해 보자면 특정 문제를 효율적으로 처리하기 위한 패턴/방법들에 대한것이 알고리즘이 아닐까하고 나름대로 정의를 내렸다. 강의를 처음 들었을때는 빅오 표기법, 문제 해결 패턴 등 굉장히 추상적인 내용들에 관한 강의가 이어졌다. 심지어 문제 해결 패턴과 관련되서는 무슨 말인지도 모르고 들었던것 ..
오늘은 버블 정렬과 선택 정렬에 대해서 공부했다. 알고리즘에 대해서 명확하게 개념 정의가 이뤄지지 않았었는데, 오늘을 기점으로 알고리즘이 무엇인지 조금씩 스스로 개념 정의가 된 것 같다. 우선 기존에 공부했던 내용들은 자바스크립트의 기본 개념에 대해서 공부한 것이고, 그 과정에서 배웠던 메서드들을 활용해서만 코드를 작성한다는 생각에 사로잡혀서 그랬던것 같다. 오늘 공부를 통해 배열을 정렬하는 방식에는 정말 많은 방법이 있다는 것을 알 수 있었다. 그리고 각각의 정렬하는 방법마다 장단점이 많이 있다. 버블 정렬과 선택 정렬의 경우에는 아래 링크를 통해서 정렬 알고리즘 애니메이션을 보았을때, 다른 알고리즘들에 비해 속도가 굉장히 느리다는 것을 시각적으로 확인할 수 있었다. 하지만 이를 공부하는 이유는 비효율..
지금 부터는 정렬에 대해서 공부하려고 한다. 정렬이란 말 그대로 데이터를 일정한 기준을 가지고 재배열하는 과정을 말한다. 정렬을 하는 방식에는 많은 방법이 존재하고 각각의 정렬 알고리즘마다 장/단점을 지니고 있다. 또한 정렬을 할 수 있는 많은 메서드들이 존재한다. 그러한 메서드들을 잘 활용하는것도 중요하겠지만, 그 동작 원리를 아는것 또한 굉장히 중요한 일이다. 대표적이고 일반적인 정렬 방식이 버블 정렬, 선택 정렬, 삽입 정렬이 있고 그 뒤로 효율성을 개선시킨 정렬 방식들이 있다. 버블 정렬, 선택 정렬, 삽입 정렬은 효율성이 떨어져 잘 사용되지는 않지만 특정 상황에서는 유용한 정렬방식일 수 있다. 7.1 버블 정렬 : 개요 버블 정렬은 흔히 사용되지는 않는다. 다른 정렬 알고리즘에 비해 비효율적이기..
오늘은 재귀함수를 통한 문제해결 방법과 검색 알고리즘에 대해서 공부했다. 재귀 함수는 파이썬, 모던 자바스크립트에서 여러번 보았고, 강의를 통해서 다시 한번 설명을 들은 뒤로는 어떻게 재귀함수가 돌아가는지 이해를 하고 있다. 하지만, 어렵긴 어렵다.. 특히 검색 알고리즘을 공부하면서 오늘은 어렵다는 생각이 많이 들었다. 한 번은 꼭 넘어야 할 산이라고 생각해서 열심히 천천히 따라가려고 노력하고 있다. 선형 검색의 경우에는 자바스크립트 메서드를 이용하거나, 코드 작성이 익숙한 반복문을 통해서 검색하기 때문에 괜찮았지만, 이진 검색 알고리즘은 처음에 많은 혼란을 불러 일으켰다. 강의를 듣고 예시 문제를 듣고 스스로 코드를 작성해 보려고 최대한 노력했지만, 스스로 코드를 작성하지는 못했다. 또 코드에 관한 해..
6.1 선형 검색(선형 탐색) 오늘 공부한 내용은 검색 알고리즘에 대해서 공부했다. 검색 알고리즘이란 예를 들어 회원가입시 아이디가 중복되는 경우 중복된 아이디가 있는지 없는지 확인을 해야하는 경우 등 이러한 문제를 해결하기 위한 일련의 과정이 바로 검색 알고리즘이다. 우선 자바스크립트는 다양한 검색 관련 메서드들을 제공하고 있다. 1. indexOf : 메서드를 통해 배열내에 해당 요소가 있다면 해당 요소의 인덱스 번호를 반환해주고, 없다면 -1을 반환한다. 2. includes : 배열 내에 특정 요소가 포함되어 있는지 확인하여 불리언값을 반환한다. 3. find : 자신을 호출한 배열의 요소를 순회하면서 인수로 전달된 콜백 함수를 호출하여 반환값이 true인 첫 번째 요소를 반환한다. 4. find..
5.1 재귀함수를 사용하는 이유 우선 재귀라는것이 무엇일까? 모던 자바스크립트에서도 공부했듯이 재귀는 자기 자신을 호출하는 함수를 의미한다. 그렇다면 재귀를 왜 알아야 할까? 코드를 작성하는데 모든 곳에서 활용될 수 있기 때문이다. 우선 재귀를 이해하기 위해서는 '실행컨텍스트 스택'을 이해할 필요가 있다. 실행 컨텍스트는 이미 모던 자바스크립트에서 공부한적이 있다. 2022.07.20 - [언어 공부 및 정리/자바스크립트[모던자바스크립트]] - 23장 실행 컨텍스트 23장 실행 컨텍스트 실행 컨텍스트는 자바스크립트의 동작 원리를 담고 있는 핵심 개념이다. 이 개념을 명확하게 이해하면 자바스크립트가 스코프 기반으로 식별자와 식별자에 바인딩된 값을 관리하는 방식과 호 pinetree93.tistory.com..