-

more

잃어버린 카드 찾기

Q. 등차수열을 이루는 4개의 카드 중 하나를 잃어버렸다. 입력은 자연수로 된 3개의 숫자 카드를 받고, 잃어버린 카드의 값을 반환한다. 잃어버린 카드는 가운데 카드로 한정한다. /* main code */ let input = [ [1, 7, 10], // 예시 1 [3, 8, 18], // 예시 2 [2, 5, 11] // 예시 3 ]; for (let i = 0; i < input.length; i++) { console.log(`#${i + 1} ${answer(input[i][0], input[i][1], input[i][2])}`); } 풀이 가장 먼저 잃어버린 카드들이 순서대로 정렬이 안되어 있을 수 있으니 sort 해준다. 이때 sort의 조건값을 주지 않는다면 예시 1에서는 [1, 10,..

등차수열 항 찾기

Q. 입력된 값을 통해서 등차수열의 몇 번째 항인지 구하는 프로그램을 작성하시오. 입력한 초항 a, 인접한 차이 d, 찾는 항의 수 n이 주어지며, n값에 해당하는 항 번호를 반환한다. 단, 만약 항 번호가 없을 시에는 -1을 반환한다. /* 메인 코드 */ let input = [ [1, 2, 7], // 문제 1 [2, 3, 10], // 문제 2 [3, 5, 23] // 문제 3 ]; for (let i = 0; i < input.length; i++) { console.log(`#${i + 1} ${answer(input[i][0], input[i][1], input[i][2])}`); } 풀이 1. for문 이용 for문으로 작성할 땐 선택식에 언제까지 증가할지 작성하지 않았지만 블럭문 안에 i..

점화식(재귀식) | 팩토리얼, 피보나치 수열

팩토리얼 팩토리얼은 그 수보다 작거나 같은 모든 양의 정수의 곱이다. 그리고 팩토리얼 함수는 모든 양의 정수와 0에 대해 정의된다. 재귀 함수를 통해서 구현했다. 역시나 재귀 함수 중 중요한 조건부에는 1이 됐을 때 1을 반환하게 했다. 그럼 0이 되지 않고 팩토리얼을 계산할 수 있는 재귀 함수가 된다. 아직 익숙하지 않은 재귀 함수이기에 코드 밑에와 같이 정리해봤다. let result; function recursive(number){ if(number == 1){ return number; } return recursive(number - 1) * number; } result =recursive(5); // 5 x 4 x 3 x 2 x 1 console.log(result); number가 5일 ..

점화식(재귀식) | 등차 수열, 등비 수열

점화식(재귀식)이란 수열에서 이웃하는 두 개의 항 사이에 성립하는 관계를 나타낸 관계식을 의미한다. 점화식들은 귀납적 추론들을 위해 수식들을 만들어내고, 이 수식들을 바탕으로 재귀나 다이나믹 프로그래밍에 밑바탕이 된다. 등차수열 아래 표와 같은 수식이 있다고 하자. 이런 배열에서 공통된 결과로는 이전항보다 2씩 커지다는 것(더해진다는 것)을 알 수 있고 f(n-1) +2, f(1) =3 인 결과인 점화식으로 나타낼 수 있다. 이를 코드로 구현해보자. 수식 f(1) f(2) f(3) f(4) f(5) 결과 3 5 7 9 11 1. for문으로 구할 때 함수의 매개 변수로 3개를 넘겨준다. 초기값(s), 커지는 간격(t), 반복 횟수(number)이다. 5번을 반복할 때 최종 요소의 값은 acc에 저장이 된..

경우의 수 구하기 | 조합

경우의 수를 구하는 방법 중 조합(nCr)은 서로 다른 n개의 원소 중에서 r를 중복 없이 골라 순서에 상관 없이 나열하는 것이다. 즉 서로 다른 n개의 원소 중에서 r개를 조합으로 뽑는다. 숫자 4개중 2개를 뽑아 중복없는 조합을 만들기 이때 숫자를 순차적으로 뽑는다고 가정한다면 4번을 뽑았을 때 1, 2, 3번을 뽑는다면 이전에 1, 2, 3번을 뽑았을 때와 중복이 될 것이다. 뽑은 숫자의 순서는 상관없기 때문이다. 그러므로 숫자는 첫번째 숫자는 1, 2, 3번만을 뽑는다고 생각해본다. 1. for문으로 구할 때 let input = [1, 2, 3, 4] // 4C2 let count = 0; function combination(arr) { // for -> 하나당 뽑는 개수 ==> r =2 니갂..

경우의 수 구하기 | 순열

어떤 사건 혹은 일이 일어날 수 있는 경우의 가짓수를 수로 표현한 것을 경우의 수라고 한다. 경우의 수를 구하는 방법중 순열(nPr)은 서로 다른 n개의 원소 중에서 r를 중복 없이 골라 순서에 상관 있게 나열하는 것이다. 즉 서로 다른 n개의 원소 중에서 팩토리얼을 써서 r개 만큼 뽑으라는 얘기이다. 팩토리얼 함수는 모든 양의 정수와 0에 대해 정의됩니다. 팩토리얼은 그 수보다 작거나 같은 모든 양의 정수의 곱이다. 3개의 알파벳(a, b, c)를 중복없이 골라 순서에 상관 있게 단어를 만드는 경우의 수 를 구하면 아래와 같이 구할 수 있다. n은 3개의 알파벳, r은 3개를 뽑아서 단어를 나열한다. 이런 경우의 수는 for문과 재귀함수를 통해서 만들 수 있다. 여기에서 0!은 1이다. 1. for문으..

GitHub Repository 하나로 합치기

일회성 레파지토리들이 너무 많이 생겨났다. 레파지토리를 삭제하면 잔디가 사라지기 때문에 새로운 레파지토리에 파일들을 옮기지 않고 일회성 레파지토리들을 합쳐보려고 한다. 1. 새로운 레파지토리를 생성한다. 2. 이 레파지토리를 로컬에 풀 받고 해당 위치의 터미널을 연다. 3. 합치고 싶은(가져오고 싶은) repository 이름, 주소, 브랜치 명을 입력한다. git subtree add --prefix=/*레파지토리명*/ /*레파지토리 주소*/ /*브랜치명*/ 4. 새로 만든 repository의 브랜치에 푸시한다. git push origin /*메인 브랜치명*/ 5. 새로 만든 repository를 확인한 후 이전 레파지토리를 삭제해도 잔디는 사라지지 않음을 확인할 수 있다.

기타 2022.05.24 0

React Lifecycle | 함수형 컴포넌트 라이프사이클 useEffect

리액트에는 컴포넌트 형태에 따라 생명주기 메서드(Lifecycle)가 다르다. 즉 class component, function component에 따라 lifecycle 함수가 달라진다는 것이다. 그래서 지난 글에 썼던 "React Lifecycle | 클래스 컴포넌트 라이프사이클" 에서 사용한 클래스형 컴포넌트 라이프 사이클 함수는 함수형 컴포넌트에서는 사용할 수 없다. React Lifecycle | 클래스 컴포넌트 라이프사이클 리액트 공식 홈페이지를 살펴보면 모든 컴포넌트는 여러 종류의 “생명주기 메서드(Lifecycle method)”를 가지며, 이 메서드를 오버라이딩하여 특정 시점에 코드가 실행되도록 설정할 수 있다고 jjinlee.tistory.com useEffect 기본 형태 useEff..

React 2022.05.11 0

React Lifecycle | 클래스 컴포넌트 라이프사이클

리액트 공식 홈페이지를 살펴보면 모든 컴포넌트는 여러 종류의 “생명주기 메서드(Lifecycle method)”를 가지며, 이 메서드를 오버라이딩하여 특정 시점에 코드가 실행되도록 설정할 수 있다고 나와있다. 쉽게 말하면 리액트는 만든 컴포넌트를 실행하는 render() 같은 함수 등 유용한 함수를 제공한다는 것이다. 생명주기라는 말 그대로 컴포넌트가 DOM에 생성 될 때부터 DOM이 제거될 때까지 주기를 설정해주는 것이다. 예를 들어 특정 컴포넌트는 계속 렌더가 되길 원하는 것이 있을 수도 있고, 또 어떤 컴포넌트는 특정한 시점에서만 렌더 되길 원하거나 종료되길 원할 것이다. 클래스형으로 작성된 리액트 작업물에선 class component lifecycle 메소드를 사용하여 컴포넌트의 생명주기를 설정..

React 2022.05.10 0

project

more