본문 바로가기

Programming310

인수와 인자, Argument & Parameter 주변 사람들에게 자바스크립트를 알려주다보면 인수와 인자를 처음 접하는 사람 입장에서 굉장히 헷갈려 하는 사람들이 많았습니다. 예전의 저 또한 두 단어가 차이가 있는건가? 싶었습니다. 그래서 간단하지만 이 둘을 정리하고 넘어가려고 합니다. 인수와 인자의 차이 사실 이건 한자어로 번역하면서 생긴 한국어의 단점이라고 생각합니다. 인수와 인자, 한자어로는 굉장히 비슷한 단어이지만 제목에도 써있듯이 영어로 풀면 Argument와 Parameter, 완전히 다른 단어입니다. 두 용어를 간단히 정의하면 인수는 함수를 호출할 때 건네주는 변수이고, 인자(=매개변수, 파라미터)는 함수에서 정의 되어 사용되는 변수입니다. 짧은 코드로 간단한 예시를 들어보겠습니다. let num = 1; function add10(num).. 2021. 11. 7.
기수 정렬 이번에 소개할 기수 정렬(Radix sort)도 지난번에 다룬 카운팅 정렬 처럼 두 요소의 대소관계 파악없이 진행하는 정렬법 입니다. 그리고 제가 기본적으로 소개할 기본적인 정렬방식의 마지막이기도 합니다. 1. 기수 정렬 기수 정렬은 요소의 대소 관계를 파악하지 않고 정렬하는 방식입니다. 기수 정렬의 시간 복잡도는 O(kn)으로 여기서 k는 요소의 최대 자릿수를 의미합니다. 즉, 정렬하려는 요소가 1의 자리라면 O(n)수준의 아주 빠른 시간 복잡도를 가질 것 이고, 1000, 10000의 자리 이런식으로 늘어날수록 시간 소모가 늘어납니다. 2. 기수 정렬의 동작 원리 기수 정렬은 각 요소를 분해해서 한자리 씩 비교합니다. 숫자라면 일의 자리는 일의 자리끼리, 문자열이라면 마지막 글자 끼리 비교합니다. 그.. 2021. 11. 7.
카운팅 정렬 카운팅 정렬은 도수 정렬, 계수 정렬 등 다양한 이름으로 불리우는 방식입니다. 책마다, 사람마다 다른 이름을 사용하고 있지만 모두 같은 정렬을 말하고 있으며 이 블로그에서는 카운팅 정렬이라고 부를 예정입니다. 1. 카운팅 정렬 카운팅 정렬은 정렬 시 대소 관계를 판단하지 않고 정렬하는 정렬법입니다. 카운팅 정렬을 시간복잡도가 O(n)으로 빠른 알고리즘이지만, 정렬하려는 대상에 따라서 시간 복잡도가 매우 커질 수 있습니다. 정확히는 시간 복잡도가 O(n+k)이기 때문입니다. 여기서 k는 컬렉션 내부의 최대 숫자입니다. 그래서 k가 무지막지하게 커질 경우 시간도 오래걸리게 됩니다. 이렇게 되는 이유는 잠시 후 카운팅 정렬의 방식을 공부해보면 알 수 있습니다. 그리고 그동안 배운 몇 가지의 정렬법이 모두 두 .. 2021. 11. 6.
힙 정렬 이번에 소개할 정렬방식은 힙(Heap) 정렬입니다. 힙이란 보통 부모 노드가 자식 노드보다 큰 조건을 가진 완전 이진트리를 의미합니다. 힙에 대한 자세한 설명은 아래 링크를 참조해주세요. 2021.10.02 - [Programming/자료구조] - 힙 Heap 힙 Heap 힙(Heap) 혹은 히프는 완전 이진 트리 종류 중 하나 입니다. 히프는 여태까지 트리를 계속 해서 연결 자료구조로 구현한 것과는 다르게 1차원 배열을 이용해서 구현할 수 있는 자료구조 이기도 합 bamtory29.tistory.com 1. 힙 정렬 힙 정렬은 전체 트리, 서브 트리에서 가장 큰 값이 부모 노드로 위치하는 트리 구조를 이용한 정렬 방식입니다. 힙에서 가장 큰 값을 가진 것이 루트이므로, 이 루트를 꺼내어서 배열에 차례대.. 2021. 11. 5.
[React] 리액트의 이벤트 핸들링 리액트가 전반적으로 사용자의 UI와 밀접한 관계를 갖고 있기 때문에 당연히 이벤트 핸들링과도 깊은 연관이 있습니다. 그렇기에 다음 단계로 넘어가기 전에 간단하게 리액트의 이벤트 처리를 알아보고 넘어가겠습니다. 1. 이벤트 이벤트는 브라우저 내에서 일어나는 모든 행동들 입니다. 클릭하거나, 스크롤하거나, 드래그하거나, 접속하거나, 페이지가 로딩되는 것도 이벤트입니다. 좀 더 전문적으로 이야기 하자면 사용자가 DOM과 상호 작용하게되는 행동들을 이벤트라고 합니다. 리액트도 사용자 UI의 View를 담당하는 만큼 사용자와의 상호작용이 가장 먼저, 많이 일어나게 됩니다. 리액트가 지원하는 이벤트로는 Focus, Keyboard, Mouse, Touch, Wheel, Media, Image 등 수많은 이벤트가 있.. 2021. 11. 4.
병합 정렬 이번에 소개할 정렬 방식은 병합 정렬입니다. 1. 병합 정렬 병합 정렬은 배열을 두개로 나누고 나눈 배열끼리 비교해서 작은 값을 먼저 넣으며 정렬하는 방식입니다. 이 과정에 한 번으로만 쪼개면 제대로된 정렬이 될리 없으므로 재귀를 이용해서 나눈 배열을 또 나누고 나누어 각 요소가 1개일 경우까지 쪼갠다음 비교해서 작은것 부터 순차적으로 넣으면됩니다. 병합 정렬의 시간 복잡도는 O(n log n)입니다. 다음과 같은 배열이 있으면, 두개의 배열로 나눕니다. 두 개의 배열로 나눈 다음에 나눈 배열의 첫 번째 요소끼리 비교해서 작은 요소를 먼저 넣고 인덱스를 1증가시켜 큰 요소를 넣으면 됩니다. 이대로 넣으면 [3, 9, 2, 4, 5, 7, 1, 8]로 정렬이 안되겠죠? 이를 위해 4개로 나눈것에서 다시 오.. 2021. 11. 3.
300x250