전체 글
-
[TIL] 해시 테이블IT 지식 2021. 7. 11. 17:04
1. 해시 테이블의 정의 해시 테이블은 고정된 크기의 자료 구조로 처음에 크기가 정해진다. 해시 테이블을 사용하면 자료를 쉽고 빠르게 저장할 수 있고, 키-값을 기반으로 자료를 얻을 수 있다. 자바스크립트에서 자바스크립트 객체는 해시테이블과 같은 방식으로 키와 해당 키의 연관된 값을 정의하는 방식으로 동작한다. 해시 테이블에는 put(), get() 이리ㅏ는 두 가지 주요 함수가 있다. put()은 자료를 해시 테이블에 저장하는데 사용하고, get()은 해시 테이블로부터 자료를 얻는 데 사용된다. 두 함수 모두 시간 복잡도가 O(1)이다. 간단히 말하자면 해시 테이블은 인덱스가 해싱 함수에 의해 계산되는 배열과 매우 유사하다. 이때 인덱스는 메모리에서 유일한 공간을 식별하기 위한 것이다. 2. 해싱 기법..
-
[TIL] 알고리즘 풀이 - 프로그래머스 '문자열 내 p와 y의 개수문제'IT 지식 2021. 5. 1. 16:31
문제 소개 더보기 대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다. 예를 들어 s가 "pPoooyY"면 true를 return하고 "Pyy"라면 false를 return합니다. 제한사항 문자열 s의 길이 : 50 이하의 자연수 문자열 s는 알파벳으로만 이루어져 있습니다. 문제 풀이 더보기 function solution(s){ var count_p = 0; //p의 개수 카운트 var count_y = 0; // y의 개수 카운트 for(var ..
-
깊은 복사와 얕은 복사에 대한 고찰(?)IT 지식 2021. 4. 25. 19:21
이번에 회사 프로젝트를 진행하던 중 리덕스에서 오류가 발생했습니다. 제가 readonly형식의 데이터에 다른 데이터를 덧씌우려고 했다는 오류 메세지였습니다. 그래서 이를 해결하기 위해 여러 자료를 찾아보던 중 제가 리덕스 상태 값에 얕은 복사를 한 데이터를 덮어 씌우려고 해서 발생한 에러임을 알게 되었습니다. 그래서 이 오류를 정리할 겸 해서 오늘은 깊은 복사와 얕은 복사에 대해서 알아보도록 하겠습니다. 0. 객체 복사 오늘의 주제를 말하기에 앞서 오늘 말하는 복사라는 행위는 객체를 복사하는 행위임을 말씀드립니다. 자바스크립트에서 배열은 특수한 형태의 객체이기 때문에, 배열의 복사 역시 오늘의 주제 범위에 포함됨을 말씀드립니다. 1. 얕은 복사란? 얕은 복사란 객체를 복사할 때 원래 값과 복사된 값이 같..
-
[프로그래밍 이론] 모던자바스크립트 Deep Dive(2)IT 지식 2021. 4. 3. 08:11
4장 p.35 메모리는 데이터를 저장할 수 있는 메모리 셀의 집합체다. 메모리 셀 하나의 크기는 1 바이트(8비트)이며, 컴퓨터는 메모리 셀의 크기, 즉 1 바이트 단위로 데이터를 저장하거나 읽어들인다. p.36 메모리 주소를 통해 값에 직접 접근하는 것은 치명적인 오류를 발생시킬 가능성이 매우 높은 매우 위험한 일이다. 만약 실수로 운영체제가 사용하고 있는 값을 변경하면 시스템을 멈추게 하는 치명적인 오류가 발생할 수도 있다. 따라서 자바스크립트는 개발자의 직접적인 메모리 제어를 허용하지 않는다. 변수는 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름을 말한다. p.38 변수 이름을 식별자라고도 한다. 식별자는 어떤 값을 구별해서 식별할 수 있는 고유..
-
[프로그래밍 이론] 모던자바스크립트 Deep DiveIT 지식 2021. 3. 31. 06:38
1장, 2장 p.2 이처럼 컴퓨터와 사람은 사고, 인지의 방식이 다르다. 따라서 컴퓨터의 관점에서 문제를 사고 해야 한다. p.3 기계어로 직접 명령을 전달하는 것을 대신할 가장 유용한 대안은 사람이 이해할 수 있는 약속된 구문으로 구성된 "프로그래밍 언어를 사용해 프로그램을 작성한 후, 그것을 컴퓨터가 이해할 수 있는 기계어로 변환하는 일종의 번역기를 이용하는 것이다.이 일종의 번역기를 컴파일러 혹은 인터프리터 라고 한다. p.5 결국 프로그래밍은 요구사항의 집합을 분석해서 적절한 자료구조와 함수의 집합으로 변환한 후, 그 흐름을 제어하는 것이다. p.8 렌더링 렌더링이란 HTML, CSS, 자바스크립트로 작성된 문서를 해석해서 브라우저에 시각적으로 출력하는 것을 말한다. 때로는 서버에서 데이터를 HT..
-
[React] uesRef 사용법IT 지식 2021. 3. 28. 15:41
useRef 란 리액트 Hooks 중의 하나로 useState나 useEffect 만큼 자주 사용되는 훅은 아니지만, 보다 심도 있는 react 코딩을 위해서는 알아두는 것이 좋은 hooks 입니다. useRef의 주 기능은 기존 바닐라 자바스크립트에서 특정 DOM을 사용하던 것처럼 특정 엘리먼트의 속성을 활용하는 것입니다. function TextInputWithFocusButton() { const inputEl = useRef(null); const onButtonClick = () => { // `current` points to the mounted text input element inputEl.current.focus(); }; return ( Focus the input ); } //출처:..
-
객체지향 프로그래밍 - 추상객체지향 프로그래밍 - 추상화(encapsulation)IT 지식 2021. 3. 28. 15:18
객체지향 프로그래밍 원칙 2: 추상화 1. 정의 객체지향 프로그래밍에서의 추상화란 객체들에게서 공통적인 속성들과 행위들을 추출하는 것을 말한다. 좀 더 자세히 설명하자면, 곰, 토끼, 호랑이, 왜가리, 메기 등등의 동물들이 있다고 할 때, 이 동물들을 포유류, 조류, 어류 등으로 분리하는 것을 말한다. 추상화를 통해 공통적인 속성을 추출한 후에 개별 속성들을 부여하여 인스턴스를 만들 수 있다. 프로그램은 여러 모듈들로 구성되는데 커다란 소프트웨어를 완성하기 위해서는 어떤 모듈들을 만들어야 하는지를 결정해야 하고, 각 모듈은 어떤 특징과 역할을 갖는지를 정해야 한다. 체계적인 소프트웨어를 만들기 위해서는 추상화를 통해 전체적인 프로그래밍의 흐름을 생각한 후 코딩을 진행하는 것이 좋다(하지만 현실적으로 이렇..
-
객체지향 프로그래밍 - 캡슐화(encapsulation)IT 지식 2021. 3. 21. 11:37
객체 지향 프로그래밍 객체 지향 프로그래밍(영어: Object-Oriented Programming, OOP)은 컴퓨터 프로그래밍의 패러다임 중 하나이다. 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다. 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다. 또한 프로그래밍을 더 배우기 쉽게 하고 소프트웨어 개발과 보수를 간편하게 하며, 보다 직관적인 코드 분석을 가능하게 하는 장점을 갖고 있다. 그러나 지나친 프로그램의 객체화 경향은 실제 세계의 모습을 그대로 반영하지 못한다는 ..