본문 바로가기

자바스크립트71

1장-디자인 패턴) 전략패턴 (정책 패턴) 1.1 Strategy pattern 이란? - 정책 패턴이라고도 하며, 객체의 행위를 바꾸고 싶은 경우 '직접' 수정하지 않고 전략이라고 부르는 '캡슐화한 알고리즘'을 컨텍스트 안에서 바꾸어 주면서 상호 교체가 가능하도록 만드는 패턴이다. - 컨텍스트란 ? : 상황, 맥락, 문맥을 의미하며, 개발자가 어떤 작업을 완료하는데 필요한 모든 정보이다. - 주로 결제시스템/passport 구현의 패턴에서 쓰인다. - passport : Node.js에서 인증모듈을 구현하는데 쓰이는 미들웨어 라이브러리이다. 여러가지 전략을 기반으로 인증할 수 있도록 하며, 서비스 내부 회원가입을 이용한 LocalStrategy와 네이버/구글/페북 등의 다른 서비스 인증을 기반으로 한 OAuth 전략을 지원한다. 1.1.1 Ja.. 2023. 2. 20.
1장-디자인 패턴) Singleton 패턴 1.1 디자인 패턴이란? - 디자인패턴이란 ? : 프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 하나의 '규약' 형태로 만들어 놓은 것이다. 1.1.1 Singleton Pattern - 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴 - DB 연결 모듈이 많이 사용한다. - 하나의 인스턴스를 만들어 놓고 해당 인스턴스를 다른 모듈들이 공유하며 사용하므로, 생성비용이 줄어든다. - 의존성이 높아지는 단점이 있다. - 단점1) TDD(Test Driven Development)할 때 걸림돌이 된다 : 단위테스트에서 각 테스트마다 독립적인 인스턴스를 만들기가 어렵다. - 단점2) 의존성 : 사용하기 쉽고 실용적이지만, 모듈 간의 결합을 강하게 만드는 단점이.. 2023. 2. 18.
[Lv.2] 행렬의 곱 1. 문제 2차원 행렬 arr1과 arr2를 입력받아, arr1에 arr2를 곱한 결과를 반환하는 함수, solution을 완성해주세요. 제한 조건 행렬 arr1, arr2의 행과 열의 길이는 2 이상 100 이하입니다. 행렬 arr1, arr2의 원소는 -10 이상 20 이하인 자연수입니다. 곱할 수 있는 배열만 주어집니다. 2. 풀이 function solution(arr1, arr2) { var answer = []; //arr1 = m*p 의 행렬, //arr2 = p*n 의 행렬이라고 가정한다. (p가 동일해야 곱할 수 있다) for(i in arr1){ //m = 세로길이 = raw = 행의 개수 let arr = []; for(let k =0; k 2023. 2. 15.
[Lv.2] 멀리 뛰기 (피보나치 수열과 경우의 수) 1. 문제 멀리 뛰기 효진이는 멀리 뛰기를 연습하고 있습니다. 효진이는 한번에 1칸, 또는 2칸을 뛸 수 있습니다. 칸이 총 4개 있을 때, 효진이는 (1칸, 1칸, 1칸, 1칸) (1칸, 2칸, 1칸) (1칸, 1칸, 2칸) (2칸, 1칸, 1칸) (2칸, 2칸) 의 5가지 방법으로 맨 끝 칸에 도달할 수 있습니다. 멀리뛰기에 사용될 칸의 수 n이 주어질 때, 효진이가 끝에 도달하는 방법이 몇 가지인지 알아내, 여기에 1234567를 나눈 나머지를 리턴하는 함수, solution을 완성하세요. 예를 들어 4가 입력된다면, 5를 return하면 됩니다. 제한 사항 n은 1 이상, 2000 이하인 정수입니다. 입출력 예 4 5 3 3 입출력 예 설명 입출력 예 #1 위에서 설명한 내용과 같습니다. 입출력 .. 2023. 2. 14.
React - 7장 : 컴포넌트의 Lifecycle Method React - 1장 : React 이해 React - 2장 : JSX React - 3장 : 컴포넌트 React - 4장 : 이벤트 핸들링 React - 5장 : ref. DOM에 이름 달기 React - 6장 : 컴포넌트 반복 해당 포스팅은 23년 기준 지금은 잘 사용하지 않는 class형 Component의 라이프사이클에 대해서 설명하고 있다. 현재에는 함수형 Component를 주로 사용한다. 참고로만 알아두자. 7-1. 라이프사이클 메서드의 이해 - 모든 리액트 컴포넌트에는 라이프사이클이 존재하며, 렌더링 되기 전 준비과정에서 시작하여 페이지에서 사라질 때 끝난다. - 라이프사이클 메서드는 class형 컴포넌트에만 사용할 수 있다. - 총 세 가지 [마운트, 업데이트, 언마운트] 의 카테고리로 나.. 2023. 2. 14.
[Lv.2] 짝지어 제거하기 (시간복잡도) 1. 문제 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙입니다. 이 과정을 반복해서 문자열을 모두 제거한다면 짝지어 제거하기가 종료됩니다. 문자열 S가 주어졌을 때, 짝지어 제거하기를 성공적으로 수행할 수 있는지 반환하는 함수를 완성해 주세요. 성공적으로 수행할 수 있으면 1을, 아닐 경우 0을 리턴해주면 됩니다. 예를 들어, 문자열 S = baabaa 라면 b aa baa → bb aa → aa → 의 순서로 문자열을 모두 제거할 수 있으므로 1을 반환합니다. 제한사항 문자열의 길이 : 1,000,000이하의 자연수 문자열은 모두 소문자로 이루어져 있습니다. .. 2023. 2. 13.
[Lv.2] 영어 끝말잇기 1. 문제 1부터 n까지 번호가 붙어있는 n명의 사람이 영어 끝말잇기를 하고 있습니다. 영어 끝말잇기는 다음과 같은 규칙으로 진행됩니다. 1번부터 번호 순서대로 한 사람씩 차례대로 단어를 말합니다. 마지막 사람이 단어를 말한 다음에는 다시 1번부터 시작합니다. 앞사람이 말한 단어의 마지막 문자로 시작하는 단어를 말해야 합니다. 이전에 등장했던 단어는 사용할 수 없습니다. 한 글자인 단어는 인정되지 않습니다. 다음은 3명이 끝말잇기를 하는 상황을 나타냅니다. tank → kick → know → wheel → land → dream → mother → robot → tank 위 끝말잇기는 다음과 같이 진행됩니다. 1번 사람이 자신의 첫 번째 차례에 tank를 말합니다. 2번 사람이 자신의 첫 번째 차례에 .. 2023. 2. 13.
[Lv.2] 피보나치 수 (오버플로우 현상) 1. 문제 피보나치 수는 F(0) = 0, F(1) = 1일 때, 1 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 수 입니다. 예를들어 F(2) = F(0) + F(1) = 0 + 1 = 1 F(3) = F(1) + F(2) = 1 + 1 = 2 F(4) = F(2) + F(3) = 1 + 2 = 3 F(5) = F(3) + F(4) = 2 + 3 = 5 와 같이 이어집니다. 2 이상의 n이 입력되었을 때, n번째 피보나치 수를 1234567으로 나눈 나머지를 리턴하는 함수, solution을 완성해 주세요. 제한 사항 n은 2 이상 100,000 이하인 자연수입니다. 입출력 예 3 2 5 5 입출력 예 설명 피보나치수는 0번째부터 0, 1, 1, 2, 3, 5, ... 와 .. 2023. 2. 12.