Study 200

[알고리즘] 최대공약수와 최소공배수 구하기, 유클리드 호제법

유클리드 호제법 최대공약수 GCD와 최소공배수를 구하는 방법 a,b ∈ ℤ 이고, r = a mod b (a를 b로 나눈 나머지)라고 가정하면 r 은 (0 ≤ r < b)이고 a ≥ b 이다. 그러면 이때 a와 b의 최대공약수를 (a, b)라고 할 때 (a, b)의 최대공약수는 (b, r)의 최대공약수와 같아지고 이는 다음과 같다. GCD(a, b) = GCD(b, r) 예시 1. a = 64, b = 42 일 경우 GCD(64, 42)일 때 r = 22이고 GCD(64, 42) = GCD(42, 22)이다. GCD(42, 22)를 보면 r = 20 이고 GCD(42, 22) = GCD(22, 20)이다. GCD(22, 20)을 보면 r = 2 이고 GCD(22, 20) = GCD(20, 2)이다. GC..

알고리즘 2024.01.30

[React] useState? useReducer? useReducer에 대해 파헤쳐보자

useReducer React Hooks의 하나로서 useState와 같이 state를 생성하고 관리할 수 있는 hook이다. 여러 개의 하위 값을 포함하는 복잡한 state를 관리할 때 useState 대신에 useReducer를 쓰면 관리 및 유지보수 하기 좋다. useReducer는 Reducer, Dispatch, Action 이 세 가지로 이루어져 있다. Reducer는 Dispatch가 보낸 Action의 내용대로 state를 직접 수정하는 주체이고, Dispatch는 Reducer에게 state를 수정할 방식(Action)을 보내는 주체이고, Action은 Dispatch가 보낸 state를 수정할 방식을 담고 있는 메시지이다. 사용법 1. useReducer const [value, dis..

[JAVA] 4948번 베르트랑 공준

4948번: 베르트랑 공준 베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼 www.acmicpc.net 문제 베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼프가 1850년에 증명했다. 예를 들어, 10보다 크고, 20보다 작거나 같은 소수는 4개가 있다. (11, 13, 17, 19) 또, 14보다 크고, 28보다 작거나 같은 소수는 3개가 있다. (17,19, 23) 자연수 n이 주어졌을 때, n보다 크고,..

PS/백준 2024.01.30

[JAVA] 1978번 소수 찾기

1978번: 소수 찾기 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. www.acmicpc.net 문제 주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오. 입력 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. 출력 주어진 수들 중 소수의 개수를 출력한다. 예제 입력 출력 4 1 3 5 7 3 알고리즘 제곱근 반복문으로도 풀리지만 나는 에라토스테네스의 체 알고리즘을 사용하여 해결하였다. [JAVA] 소수 구하기, 에라토스테네스의 체 에라토스테네스의 체 소수를 구하는 방법 중 하나 i = 2 부터 √N 이하까지 반복하여 자연수..

PS/백준 2024.01.30

[JAVA] 1929번 소수 구하기

1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net 문제 M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. 출력 한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다. 예제 입력 출력 3 16 3 5 7 11 13 알고리즘 제곱근 반복문으로만 풀어서는 시간 초과로 해결하지 못하고 꼭 에라토스테네스의 체 알고리즘을 사용해야 시간 내에 해결할 수 있다. [JAVA] 소수 구하..

PS/백준 2024.01.29

[알고리즘] 소수 구하기, 에라토스테네스의 체

에라토스테네스의 체 소수를 구하는 방법 중 하나 i = 2 부터 √N 이하까지 반복하여 자연수들 중 i를 제외한 i의 배수들을 제외시키는 방식 시간복잡도: O(Nlog(log N)) 다음의 그림과 같이 1을 제외하고 2부터 시작하여 2의 배수인 4, 6, 8, 10 .. 는 이미 2를 약수로 가져 소수가 아니므로 제외하고 그 후 3의 배수인 9, 15, 21, 27 .. 들도 이미 3를 약수로 가져 소수가 아니므로 제외하면서 범위 내 소수를 구하는 방식이다. 왜 N 까지가 아니라 √N 까지일까? n = a × b 라고 하고 하면 1 ≤ a, b √ N 하다면 a × b > n 이므로 a와 b 중 적어도..

알고리즘 2024.01.29

[React] useCallback 사용한 성능 최적화

useCallback React Hooks 중 하나로서 useMemo와 같이 Memoization 기법으로 컴포넌트 성능을 최적화시키는 방법이다. useMemo나 memoization을 모른다면 아래의 링크를 통해 꼭 보고 오자! [React] Memoization과 useMemo 사용법 useMemo React Hooks 중에 하나로서 컴포넌트 성능 최적화를 위해 사용한다. 성능 최적화를 위해 사용하는 Hooks에는 useCallback도 있다. [React] useCallback 사용한 성능 최적화 useCallback React Hooks 중 하나로서 mi-dairy.tistory.com useCallback는 첫 번째 인자로 들어간 "콜백함수 그 자체"를 memoization 한다. 즉 콜백함수를..

[React] Memoization과 useMemo 사용법

useMemo React Hooks 중에 하나로서 컴포넌트 성능 최적화를 위해 사용한다. 성능 최적화를 위해 사용하는 Hooks에는 useCallback도 있다. [React] useCallback 사용한 성능 최적화 useCallback React Hooks 중 하나로서 useMemo와 같이 Memoization 기법으로 컴포넌트 성능을 최적화시키는 방법이다. useMemo나 memoization을 모른다면 아래의 링크를 통해 꼭 보고 오자! [React] 성능 최적화를 위 mi-dairy.tistory.com useMemo에서 Memo는 Memoization을 뜻하는데 이때 Memoization이란 동일한 값을 리턴하는 코드를 반복적으로 호출해야 할 때 제일 처음 호출했을 때 해당 값을 메모리에 저장..

[React] useRef를 통해 DOM요소에 직접 접근하기

useRef의 변수 관리 저장공간으로써 사용하는 방법은 아래의 링크를 통해서 보면 된다. [React] useRef는 언제 왜 사용할까? useRef useRef는 함수형 컴포넌트 내에서 사용하며 React Hooks 중에 하나이다. 사용법 useRef를 사용하기 위해선 먼저 다음과 같이 import를 해주어야 useRef 사용이 가능하다. import { useRef } from 'react'; 이렇 mi-dairy.tistory.com 이번에는 useRef를 통해 DOM 요소에 직접 접근하는 방법을 알아볼 것이다. 사용법 const ref = useRef(value); 위의 코드를 통해 ref에는 객체가 반환되게 되는데 그때 반환된 객체를 다음과 같이 태그의 ref 속성으로 넣어주기만 하면 우리는 쉽..

[React] useRef는 언제 왜 사용할까? 무한루프 해결방법

useRef useRef는 함수형 컴포넌트 내에서 사용하며 React Hooks 중에 하나이다. 사용법 useRef를 사용하기 위해선 먼저 다음과 같이 import를 해주어야 useRef 사용이 가능하다. import { useRef } from 'react'; 이렇게 import 된 useRef는 코드에서 다음과 같이 사용된다. const ref = useRef(value); 이때 ref 에는 객체가 반환되게 되는데 그때 반환된 객체는 다음과 같이 생겼다. { current: value } 다음과 같이 useRef의 인자로 넣어준 초기값은 ref 객체 내의 current에 저장되게 된다. 또한 ref 객체는 언제든지 수정이 가능하여 원하는 값으로 바꿔줄 수 있다. const ref = useRef("v..