본문 바로가기

전체 글64

[JavaScript] 함수 표현식 VS 함수 선언식 이번에는 자바스크립트에서 함수를 선언하는 방법을 알아보겠습니다! :) 함수 선언식 일반적으로 작성하는 함수 방법입니다. function 함수명() { //함수 로직 } function funcDeclarations() { return 'function declaration'; } // 함수 호출 funcDeclarations(); 함수 표현식 함수를 변수에 저장하여 활용하는 방식입니다. var 함수명 = function () { //함수 로직 } var funcExpression = function () { return 'function epression' } // 함수 호출 funcExpression(); 함수 선언식 VS 함수 표현식 둘의 가장 큰 차이점은 호이스팅에 있습니다. 먼저 호이스팅은 선언한.. 2022. 1. 25.
[CS] 논리 게이트 이 글은 '한 권으로 읽는 컴퓨터 구조와 프로그래밍' 을 정리하여 작성한 글입니다. 논리 게이트 불리언 대수를 물리적 장치에 구현한 것으로, 하나 이상의 논리적 입력값에 대해 논리 연산을 수행하여 하나의 논리적 출력값을 얻는 전자회로 게이트를 사용하면 배관공이 기성 제품의 배관들을 이용하여 복잡한 수도 시스템을 만드는 것처럼 복잡한 회로를 쉽게 만들 수 있습니다. 이전에 배운 것들과 마찬가지로 AND 게이트 출력은 A와 B가 참인 경우에만 Y에 참이 출력됩니다. 위의 인버터(NOT) 기호에서 동그라미가 없는 기호는 버퍼(buffer) 라고 하고, 출력을 전달하기만 합니다. 반면, 인버터 기호는 입력에 대한 보수(complement)를 출력합니다. (ex, 0 --> 1 / 1 --> 0) 논리 게이트에서.. 2022. 1. 25.
[항해99] 2주차 회고 한 주에 대한 정리 항해 2주차는 자바스크립에 대한 구현력을 기르는 시간이었습니다. 알고리즘 문제들을 풀어보면서 자바스크립트의 내장 메서드들을 자유롭게 사용하고 다양한 유형의 문제들을 풀면서 조금이나마 연습을 할 수 있었습니다. 이번 주는 알고리즘 주차가 끝나고 리액트에 대한 강의와 숙제가 시작되는 주차이기도 합니다. 리액트는 자바스크립트의 라이브러리 중 하나로, 역시 자바스크립트를 잘 사용하는 것이 중요합니다. 아래에서는 자바스크립트를 하면 알아야하는 ECMAscript에 대해 조금 설명하겠습니다. ES 는 무엇인가 ES 는 ECMAScript 의 약자입니다. ECMAScript 는 Ecma 인터내셔널의 ECMA-262 기술 규격에 정의된 표준화된 스크립트 프로그래밍 언어입니다. 자바스크립트가 개발된 .. 2022. 1. 23.
[cs] 텍스트 표현 이 글은 '한 권으로 읽는 컴퓨터 구조와 프로그래밍' 을 정리하여 작성한 글입니다. 텍스트 표현 컴퓨터에서 수를 사용해 문자나 키보드에 있는 다른 기호 등을 표현하는 방법입니다. 아스키코드 (ASCII) (American Standard Code for Information Interchange) 여러 아이디어 중 1963년부터 가장 많이 쓰이는 코드 정보 교환을 위한 미국 표준코드 키보드에 있는 모든 기호에 대해 7비트 수 값을 할당 경쟁에서 패배한 아이디어 확장 BCD 교환 코드 (EDCDIC) - 펀치 카드에 사용한 인코딩을 기반으로 만들어진 코드 아스키코드 표를 보면 'A'라는 글자의 10진 값은 65, 16진 값은 0x41 이라는 것을 볼 수 있습니다. 제어 문자, Control Characte.. 2022. 1. 20.
[항해99] 1주차 회고 한 주에 대한 정리 항해99 부트캠프를 시작하고 1주 차가 끝났습니다. 앞으로 매주 무엇을 했는지, 어떠한 생각이 들었는지, 어떤 것을 배웠는지 회고를 해보려고 합니다. 항해의 1주 차는 팀으로 미니 프로젝트를 수행하고 완성하며 이후 긴 시간을 적응하기 위한 준비의 기간이었습니다. 저희 조는 4명으로(중간에 한 분이 하차하셨지만..) 스타벅스 음료들을 리뷰하는 웹 사이트를 만들었습니다. 먼저, 1주 차에 대한 소감은 팀 프로젝트로 협업을 경험하고 스스로 하나의 프로젝트를 완성하는 경험을 가질 수 있었다는 것이 좋았습니다. 물론 대단한 협업이나 대단한 프로젝트를 만든 것은 아니지만, 성취감을 중요하게 생각하는 사람으로서 좋은 경험이 되었다고 생각합니다. 다음에는 프로젝트를 진행하면서 알게 된 것에 대해 정.. 2022. 1. 16.
깊이 우선 탐색 (DFS)과 너비 우선 탐색 (BFS) 깊이 우선 탐색 (Depth First Search) 깊이 우선 탐색은 특정 노드에서 시작해, 최대한 깊숙히 탐색한 후에 다른 분기의 노드를 탐색하는 방식을 말합니다. 아래의 그림을 보면 조금 더 이해하기 쉬우실 것입니다. 특정 노드에서 맨 아래의 자손 노드까지 탐색한 후에 목표를 찾지 못했다면 다시 부모 노드로 돌아와 다른 갈림길에서 탐색을 반복합니다. 이때, 부모 노드로 돌아오는 과정을 백트래킹이라고 합니다. 깊이 우선 탐색은 다음과 같은 특징을 가집니다. 모든 경로를 방문해야 할 경우에 적합합니다. 주로 스택을 사용하여 구현합니다. 장점으로는 탐색 경로의 노드들만 기억하면 되므로, 그래프 높이 만큼의 공간만 필요하다는 장점을 가집니다. 단점으로는 목표가 되는 데이터가 없는 경로를 탐색하는 경우가 있.. 2021. 9. 17.
이진 탐색 (Binary Search) 이진 탐색 이진 탐색 알고리즘은 정렬된 데이터에서 범위를 줄여가면서 데이터를 탐색하는 방법입니다. 중요한 것은 정렬되어 있는 데이터에서만 사용할 수 있는 알고리즘 이라는 것입니다. 이진 탐색의 과정은 다음과 같습니다. start, end로 mid 값을 설정합니다. mid 값과 찾고자 하는 값과 비교합니다. 찾고자 하는 값이 mid 보다 높으면 start = mid + 1, 찾고자 하는 값이 mid 보다 낮으면 end = mid - 1 값을 찾거나 start 위치가 end를 넘어설때까지 반복합니다. 11을 찾는 아주아주 간단한 예를 보겠습니다. 1 3 5 7 9 11 13 start mid end -> 11 > mid 이므로, start의 위치를 9로 옮김 1 3 5 7 9 11 13 start mid e.. 2021. 9. 17.
힙 정렬 (Heap Sort) 힙 정렬 자료구조인 힙을 이용하여 정렬을 수행하는 방법입니다. 그렇다면 힙이 무엇일까요? 힙 (Heap) 힙은 완전 이진 트리이며 최소 힙과 최대 힙이 있습니다. 여기서 완전 이진 트리나 힙에 대해서 더 설명하지는 않겠습니다. 힙에 대해서 잘 모르시는 분께서는 공부를하고 다시 보시는 것을 추천드립니다. : ) 힙 정렬을 다시 말하자면, 최소 힙이나 최대 힙을 이용하여 정렬하는 방법입니다. 내림차순 정렬을 위해서는 최대 힙을 사용하고, 오름차순 정렬을 위해서는 최소 힙을 사용합니다. 힙 정렬의 과정은 다음과 같습니다. (설명을 위해 내림차순 정렬을 예시로 보여드리겠습니다.) 정렬할 데이터들을 최대 힙으로 만듭니다. 최대 힙의 루트에 있는 가장 큰 값을 마지막 요소와 교환하여, 힙의 사이즈를 줄입니다. 최대.. 2021. 9. 15.
퀵 정렬 (Quick Sort) 퀵 정렬 퀵 정렬은 1) 분할 정복 알고리즘의 하나로, 평균적으로 매우 빠른 수행 속도를 자랑합니다. 1) 분할 정복 분할 정복은 문제를 2개의 문제로 분리하여 각각 해결하고, 결과를 모아 원래의 문제를 해결하는 전략입니다. 퀵 정렬의 진행 과정은 다음과 같습니다. 데이터들의 배열에서 하나의 원소를 선택합니다. 선택된 원소를 피벗(pivot)이라고 부릅니다. 피벗을 기준으로 왼쪽에는 피벗보다 작은 값, 오른쪽에는 피벗보다 높은 값이 오도록 배열을 분할합니다. 피벗을 제외한 왼쪽 배열과 오른쪽 배열을 다시 정렬합니다. 더이상 분할이 불가능할 때까지 반복합니다. 퀵 정렬은 피벗을 기준으로 배열을 나누는 분할, 분할된 배열을 정렬하는 정복, 정렬된 분할 배열들을 다시 합치는 결합의 단계들로 이루어져 있습니다... 2021. 9. 13.