본문 바로가기

전체 글170

리엑트 렌더링 과정에 대하여... 오늘은 리엑트를 다루는 기술 1강을 보면서 가장 몰랐던 내용은 리엑트가 왜 빠른지 였다. 책에서 나온 설명으로는 리엑트가 빠른 이유가 virtual dom이라고 하는데 도대체 virtural dom은 뭐고 dom도 뭔지 잘 몰라서 그거에 대해서 조사를 해본 결과를 한번 말해보겠다. 브라우저는 크게 초기 렌더링, 업데이트시의 렌더링, 이렇게 2가지의 렌더링을 거친다. 첫번째, 초기 렌더링은 말 그대로 처음 웹사이트를 들어왔을 때 거치는 과정이다. 이때 브라우저는 새로운 DOM을 만든다. (참고 : 렌더링이란 브라우저에 리소스(html,css,js)를 그리는 작업을 뜻한다.) 두번째, 업데이트시의 렌더링은 다른 페이지로 이동했을때 발생하는 렌더링을 말한다. 브라우저는 업데이트된 DOM을 만들고 기존에 있던 .. 2023. 6. 15.
선택 트랙 알고리즘 [9일차] 1. DP의 탄생 배경 : DP는 완전탐색의 단점을 보안하기 위해서 생겼다. 그럼 여기서 완전탐색은 무엇일까? 완전 탐색이란 말 그대로 처음부터 끝까지 다 돌면서 조건에 부합하는 경우를 고르는 탐색 알고리즘이다. 따라서 완전 탐색을 쓰게 되면 데이터가 많아질 수록 시간이 오래 걸린다. 그래서 나온 알고리즘이 DP이다. 즉 DP는 완전 탐색 보다 빠르며 정확한 알고리즘이다. 하지만 DP는 구현하는데에서 굉장한 어려움이 발생한다. 우리가 완전탐색을 구현하는 것도 힘든데 완전탐색을 효율적으로 처리하기 위해서는 당연히 더 힘들 수 밖에 없다. 그래서 나는 백준의 피보나치 함수를 통해서 한번 DP를 구체적으로 살펴볼까 한다. 2. DP의 구현방법 문제 다음 소스는 N번째 피보나치 수를 구하는 C++ 함수이다. i.. 2023. 5. 31.
선택 트랙 알고리즘 (8일차) 문제 카지노에서 제일 인기 있는 게임 블랙잭의 규칙은 상당히 쉽다. 카드의 합이 21을 넘지 않는 한도 내에서, 카드의 합을 최대한 크게 만드는 게임이다. 블랙잭은 카지노마다 다양한 규정이 있다. 한국 최고의 블랙잭 고수 김정인은 새로운 블랙잭 규칙을 만들어 상근, 창영이와 게임하려고 한다. 김정인 버전의 블랙잭에서 각 카드에는 양의 정수가 쓰여 있다. 그 다음, 딜러는 N장의 카드를 모두 숫자가 보이도록 바닥에 놓는다. 그런 후에 딜러는 숫자 M을 크게 외친다. 이제 플레이어는 제한된 시간 안에 N장의 카드 중에서 3장의 카드를 골라야 한다. 블랙잭 변형 게임이기 때문에, 플레이어가 고른 카드의 합은 M을 넘지 않으면서 M과 최대한 가깝게 만들어야 한다. N장의 카드에 써져 있는 숫자가 주어졌을 때, .. 2023. 5. 30.
선택 트랙 알고리즘 [7일차] 문제 준규가 가지고 있는 동전은 총 N종류이고, 각각의 동전을 매우 많이 가지고 있다. 동전을 적절히 사용해서 그 가치의 합을 K로 만들려고 한다. 이때 필요한 동전 개수의 최솟값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) 출력 첫째 줄에 K원을 만드는데 필요한 동전 개수의 최솟값을 출력한다. 이 문제를 처음 접했을 때는 약수를 먼저 알아야 한다는 것을 알았다. 그럼 먼저 약수에 대해서 살펴보자 내가 생각하는 약수는 다음과 같다. 약수는 1과 자기 자신을 .. 2023. 5. 29.
알고리즘 선택 트랙 [6일차] 지민이는 N개의 원소를 포함하고 있는 양방향 순환 큐를 가지고 있다. 지민이는 이 큐에서 몇 개의 원소를 뽑아내려고 한다. 지민이는 이 큐에서 다음과 같은 3가지 연산을 수행할 수 있다. 첫 번째 원소를 뽑아낸다. 이 연산을 수행하면, 원래 큐의 원소가 a1, ..., ak이었던 것이 a2, ..., ak와 같이 된다. 왼쪽으로 한 칸 이동시킨다. 이 연산을 수행하면, a1, ..., ak가 a2, ..., ak, a1이 된다. 오른쪽으로 한 칸 이동시킨다. 이 연산을 수행하면, a1, ..., ak가 ak, a1, ..., ak-1이 된다. 큐에 처음에 포함되어 있던 수 N이 주어진다. 그리고 지민이가 뽑아내려고 하는 원소의 위치가 주어진다. (이 위치는 가장 처음 큐에서의 위치이다.) 이때, 그 원소.. 2023. 5. 27.
알고리즘 선택 트랙 [5일차] 큐2 백준 18258 문제 이 문제를 보았을때는 저번에 스택 문제가 떠올랐다. 그래서 나는 리스트를 사용하였다. 근데 처음에 시간 초과가 나왔다. 해당 코드는 다음과 같다. # 시간 초과 코드 import sys n = int(input()) q = [] for i in range(n): data = list(map(str,sys.stdin.readline().split())) if data[0] == "pop": if len(q) != 0: print(q.pop(0)) else: print(-1) if data[0] == "size": print(len(q)) if data[0] == "empty": if len(q) == 0: print(1) else: print(0) if data[0] == "fr.. 2023. 5. 26.