개발

    [React] Redux

    1. 리덕스란? 리액트에서 사용할수 있는 하나의 라이브러리이다. 라이브러리라는건 없어도 리액트로 작엄물을 만들수 있지만 편하게 작업하려고 쓰는것이다. 실무에서 리덕스를 안쓰면 매우 불편하기 때문에 필수로 사용한다. 리액트는 자식 컴포넌트에 props로 전달은 가능한데 다른 컴포넌트에서 직접 데이터 공유가 불가능하다. 그래서 공유해야할 데이터를 공유받는 자식 컴포넌트들의 공통부모에서 State를 만들어서 자식 컴포넌트에게 전달한다. 리액트는 데이터 흐름이 단방향이기 때문에 이러한 작업이 필요하다. 그래서 작업을 하다보면 부모 컴포넌트에 무척 많은 props가 생기는데 이런 단점을 보완하기 위해서 리덕스를 사용한다. 리덕스는 state를 저장해주는 store(저장소) 각각의 컴포넌트가 어느 컴포넌트던 사용할..

    [코딩테스트] 프로그래머스 문제

    1. 최소직사각형 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr function solution(sizes) { sizes = sizes.map((el) => el.sort((a, b) => a - b)); len1 = sizes.sort((a, b) => b[0] - a[0])[0][0]; len2 = sizes.sort((a, b) => b[1] - a[1])[0][1]; return len1 * len2; } 2. 영어 끝말잇기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기..

    [BigO] 객체와 배열

    1. 객체 빠른접근, 빠른제거에 좋다 정렬되어있지는 않지만 다른건 매우 빨드ㅏ. (1) Insertion(추가) : O(1) (2) Removal(제거) : O(1) (3) Searching(탐색) : O(N) (4) Access(접근) : O(1) 객체의 입력,제거,접근은 다 상수시간이다. 탐색은 n의 시간복잡도를 가진다. 2. 객체 메서드들 (1) Object.keys : O(N) (2) Object.values : O(N) (3) Object.entries : O(N) (4) hasOwnProperty : O(1) 3. 배열 객체와의 가장 큰 차이는 정렬을 할 수 있다는 것이다. (1) Insertion(추가) : It depends(상황에 따라) (2) Removal(제거) : It depends..

    [코딩테스트] 프로그래머스 문제 모음

    1. 같은 숫자는 싫어 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr (1) 1번 풀이 function solution(arr) { for (let i = 0; i < arr.length; i++) { if (arr[i] == arr[i + 1]) { arr.splice(i, 1); i--; } } return arr; } 효율성 테스트 시간초과 splice로 계속 접근해서 시간이 더 걸린것같다. (2) 2번 풀이 function solution(arr) { let answer = []; for (let i = 0; i < arr.length; i++) ..

    [코딩테스트] 올바른 괄호

    프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 1번풀이 function solution(s) { var answer = true; s = s.split(""); while (true) { const idx1 = s.indexOf("("); const idx2 = s.indexOf(")"); if (idx2 < idx1 || idx1 == -1 || idx2 == -1) { answer = false; break; } s.splice(idx2, 1); s.splice(idx1, 1); if (s.join("") == "") { break; } } re..

    [BigO] BigO 표기법

    1. BigO표기법이란? 간단하게는 대략적으로 숫자를세는 것의 공식적인 표현이다. 다시말하면 입력된 내용이 늘어날 수록 알고리즘에 실행시간이 어떻게 변하는지 설명하는 공식적인 방식이다. BigO표기법으로 함수의 입력값이 늘어나는것과 함수 실행시간이 변하는 관계를 숫자로 나타내고 이를 시각화 할수 있다. N이 커질수록 컴퓨터가 f(n) 상수 곱하기 f(n) 보다 간단한 연산을 덜 해야한다면 그 알고리즘을 O(f(n))이라고 표현한다. 2. BigO 표기법의 필요성 모든 코드는 좋은 코드와 안좋은 코드로 분류할 수 없다. 그래서 우리는 이 애매한 표현들 대신에 숫자로 코드의 성능을 표기 할수 있다. 그것이 바로 BigO표기법이다. 3. 시간복잡도 O(1) : 상수의 계산, 변수 선언, 인덱스, 객체에서 키로..