반응형

전체 글 140

JSX 소개

JSX (JavaScript XML) JavaScript를 확장한 문법이다. JSX라고 하면 템플릿 언어가 떠오를 수도 있지만, JavaScript의 모든 기능이 포함되어있다. JSX는 React "element"를 생성한다. JSX란? React는 별도의 파일에 마크업과 로직을 넣어 기술을 인위적으로 분리하는 대신, 둘 다 포함하는 '컴포넌트'라고 부르는 느슨하게 연결된 유닛으로 관심사를 분리한다(복잡성을 낮춘다). JSX의 중괄호 { } 안에는 JS의 유효한 모든 표현식을 넣을 수 있다. JSX도 표현식이다. JSX를 if 구문 및 for loop 안에 사용하고, 변수에 할당하고, 인자로서 받아들이고, 함수로부터 반환할 수 있다. JSX 속성 정의 어트리뷰트에 따옴표를 이용하여 문자열 리터럴을 정의할..

IT/React 2021.11.25

프로그래머스) 프린터

https://programmers.co.kr/learn/courses/30/lessons/42587 코딩테스트 연습 - 프린터 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린 programmers.co.kr 나의 풀이) 이번 알고리즘도 풀지 못하였다. 제한 시간을 2시간으로 두고 풀어보았고, 수 차례 쓰고 지우고를 반복했지만 무엇인가 벽이 느껴졌다. 아이디어 힌트를 얻고 풀긴 했지만 2단계에 들어서고부터는 계속 힌트를 얻어 풀고있는데 만족스럽지 못하다. function solution(priorities, location) { let rank = 0; while (pr..

IT/Algorithm 2021.11.24

동적 타입 언어

C언어와 같은 정적 타입 언어는 변수를 선언할 때 무조건 변수에 할당될 데이터의 타입을 정해주어야 한다. 그러므로 해당 변수에는 선언된 데이터 타입의 값만 할당할 수 있다. 이는 컴파일 시에도 데이터 값이 선언된 타입과 맞는지 확인하여 맞지 않으면 오류를 보내게 된다. 이처럼 데이터 타입에 강제성을 부여하면 훨씬 안정적인 코드를 작성할 수 있다. 이에 반에 자바 스크립트나 파이썬과 같은 동적 언어들은 변수의 재할당에서 자유롭다. 이는 해당 변수가 어떠한 데이터 타입이든 가질 수 있다는 것을 의미한다. 이는 편리하다는 장점이 있지만, 반대로 단점 또한 존재한다. 자유로운 데이터 타입 변화는 코드가 복잡할수록 변수의 데이터 타입 추적에 어려움을 겪게 만든다. 이 때문에 오류를 뿜어내기도 하는 것이다. 따라서..

IT/Study 2021.11.23

프로그래머스) 구명보트

https://programmers.co.kr/learn/courses/30/lessons/42885 코딩테스트 연습 - 구명보트 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 5 programmers.co.kr 나의 풀이) 이번 풀이는 내가 풀지 못하였다. 즉 질문하기 란에 사람들이 질문하고 답변한 것에서 힌트를 많이.. 얻어 풀었다는 뜻이다. 문제에 나와있듯 이 알고리즘은 탐욕법 알고리즘이다. 즉 모든 부분에서의 최적해를 구하는 것이 아닌 그 상황에서의 최적해를 구한다는 뜻이다. 나는 이중 for문, while문, 재귀 함수를 사용하여 테스..

IT/Algorithm 2021.11.23

객체 지향 프로그래밍 기본 용어

Object Oriented Programing (OOP)의 기본 아이디어는 단순하고 직관적이다. 객체는 데이터와 기능을 논리적으로 묶어 놓은 것이다. OOP는 우리가 사물을 이해하는 자연스러운 방식을 반영하도록 설계되었다. 만약 자동차가 객체라면 그 데이터에는 제조자, 모델, 차량 번호와 같은 것들이 있을 것이다. 그 기능으로는 변속, 문 열기와 같은 것들이 있을 것이다. 그렇다면 비유를 통해 OOP의 기본 용어에 대해 알아보자. 클래스는 '어떤 자동차'처럼 추상적이고 범용적인 것이다. 인스턴스는 특정 자동차처럼 구체적이고 한정적인 것이다. 기능은 메서드라고 부른다. 클래스에 속하지만 특정 인스턴스에 묶이지는 않는 기능을 클래스 메서드라고 부른다. 예시로 시동을 거는 기능은 클래스 메서드라고 부를 수 ..

IT/Study 2021.11.23

프로그래머스) 큰 수 만들기

https://programmers.co.kr/learn/courses/30/lessons/42883 코딩테스트 연습 - 큰 수 만들기 programmers.co.kr 나의 풀이 function solution(number, k) { const numArray = [...number]; const stack = []; while (numArray.length) { if (k > 0 && stack[stack.length - 1] < numArray[0]) { stack.pop(); k -= 1; continue; } stack.push(numArray.shift()); } return stack.slice(0, stack.length - k).join(""); } 하지만 테스트 코드 10번을 계속 실패하..

IT/Algorithm 2021.11.21

MVC 디자인 패턴

MVC 패턴이란? Model, View, Controller 즉 MVC는 소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴이다. 이 패턴은 사용자 인터페이스로부터 비즈니스 로직을 분리하여, 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있다. 비즈니스 로직이란? 회원 가입을 예로 들어보자. 아이디 중복 검사를 해야 할 때 크게 두 영역으로 나눌 수 있다. 하나는 중복 아이디가 있는지 없는지를 검사하기 위한 일련의 과정 또 다른 하나는 유저에게 단순히 텍스트나 다이얼로그로 알려주는 것이 있다. 두 번째 영역은 View 영역 또는 Presentation 영역이라고 불리는데, 가공된 데이터를 단순히 표시만 해주는 것이다. 데이터 ..

IT/Computer Science 2021.11.15

[자료구조] linked list와 array의 차이

요소 접근 (탐색 및 조회) array는 random access를 지원한다. - random access란? : O(1)의 시간에 인덱스를 통해 모든 배열 요소에 액세스 할 수 있는 것을 의미한다. 따라서 배열은 특정 배열 요소에 접근하는 시간 복잡도이 O(1)이다. linked list는 sequential access를 지원한다. - 어떤 요소에 접근할 때, 처음부터 순차적으로 접근하며 찾아야 한다. - 특정 요소에 접근할 때의 시간 복잡도는 O(n)이 된다. 저장 방식 array에서 요소들은, 인접한 memory의 위치에 저장된다. linked list에서 새로운 요소들은, 각각 memory 어딘가에 저장된다. 새로운 요소의 memory 위치 주소는 linked list의 이전 node에 저장된다..

IT/Computer Science 2021.11.14

자료구조 - Graph

Graph node와 edge로 구성된 한정된 자료구조이다. node는 정점이며 edge는 정점 간의 간선이다. 그래프는 방향성이 있을 수도, 없을 수도 있다. 인접 리스트 인접 리스트로 그래프를 표현하는 것이 가장 일반적인 방법이라고 한다. 인접 리스트는 그래프 내에 적은 숫자의 간선만을 가지는 경우에 용이하다고 한다. 각각의 정점에 인접한 정점들을 리스트로 표시한 것이다. 배열이나 연결 리스트 등을 이용해서 구현이 가능하다. 특징으로는 연결된 간선의 정보만을 저장하여 공간 효율성은 우수하지만 각 정점들의 연결 여부 확인을 위해 O(n)의 시간 복잡도를 가진다. 인접 행렬 인접 행렬은 정점들을 2차원 배열로 나타낸 것이다. 인접 행렬은 그래프에 간선이 많이 존재하는 밀집 그래프의 경우에 용이하다. 단점..

IT/Computer Science 2021.11.12

Hash - 오버플로우 처리 방법

먼저 해시 함수가 가져야 할 특징 3가지가 있다. 충돌이 적어야 한다. 해시 테이블에 고르게 분포시킬 수 있는 주소의 연산 값이 나와야 한다. 이는 곧 1번을 충족할 수 있다. 계산이 빨라야 한다. 위 3가지를 고루 갖추지 못한다면 100개의 버킷 중에 하나의 버킷만 나와서 오버플로우가 발생하는 참사가 일어날 수 있다. 위의 특징을 고루 갖춘 함수 중 하나로 제산 함수라는 것이 있다. 제산 함수 레코드(키) 값을 소수로 나누어 나머지 값을 주소로 지정하는 해시 함수. ex) h(k) = k % 7 만약 위 특징을 갖춘 해시 함수를 만들었는데도 오버플로우가 발생한다면? 내가 아는 선에서 두 가지의 방법이 있다. 선형 탐사법 (Linear Probing) 분리 연결법 (Separate Chaining) 1...

IT/Computer Science 2021.11.12
반응형