본문 바로가기
반응형

분류 전체보기62

[Sort] 데이터 정렬에 대한 정리 arr = [35,33,42,10,14,19,27,44,26] def quick_sort(arr,start,end): if start >= end: # 원소가 1개인 경우 종료 return pivot = start # 피벗은 첫번째 원소 left = start + 1 right = end while left right: # 엇갈렸다면 작은 데이터와 피벗 교체 arr[right], arr[pivot] = arr[pivot], arr[right] else: # 엇갈리지 않았다면 작은 데이터와 큰 데이터를 교체 arr[left], arr[right] = arr[right], arr[left] # 분할 이후 왼쪽 부분과 오른쪽 부분에서 각각 정렬 하기 quick_sort(arr, start, right - 1).. 2023. 3. 18.
[Web] 브라우저 엔진(렌더링 엔진)이란? 목적 : 브라우저 렌더링 방식을 이해하기 위해 ​ 웹 브라우저가 하는일? HTML CSS JS 로 만든 코드를 가지고 웹 페이지를 그려줌 웹 브라우저의 구조 User Interface 주소 표시줄, 이전/다음/새로고침 버튼 등 웹 페이지를 제외하고 사용자와 상호작용 하는 사용자 인터페이스 Rendering Engine HTML 과 CSS를 파싱하여 요청한 웹 페이지를 표시하는 렌더링 엔진 Browser Engine 유저 인터페이스와 렌더링 엔진을 연결하는 브라우저 엔진 Networking 각종 네트워크 요청을 수행하는 네트워킹 파트 UI Backend 체크박스나 버튼과 같은 기본적인 위젯을 그려주는 UI 백엔드 파트 Data Persistence localStorage나 Cookie와 같이 보조 기억장치.. 2023. 3. 18.
[알고리즘] 최대점수구하기 (DFS-재귀) 목적: DFS 알고리즘의 재귀적 특성을 이해하기 위해서 ​ 문제 설명(요약): N개의 문제에 대한 각 점수와 각 문제를 풀기 위한 시간이 주어졌을 때, 정해진 M시간 내 에서의 최대 점수를 찾는문제 ​ 해결전략: 노드를 탐색하며(L++) 주어진 입력(점수,시간)을 쓴다 안쓴다 (sum++ or sum, time ++ or time) -> 재귀 함수로 구현 ​ 재귀함수에 대한 이해: arr = [[점수,시간],[점수,시간],,,,,,[점수,시간]] DFS(L+1,sum+arr[L][0],time+arr[L][1]) # 노드를 사용한다 1번 DFS(L+1,sum,time) # 노드를 사용하지 않는다 2번 1번 함수를 호출 했을 때 -> 만약에 시간이 초과되면 return 후 돌아와서 2번함수 호출 (stac.. 2023. 3. 18.
[알고리즘] 적록색약 (BFS-GoldⅤ) 목적: BFS 알고리즘의 Queue 자료구조를 이해하기 위해서 ​ 문제 설명(요약): N*N 행렬에 R,G,B 문자열(색상) 요소가 들어있다. 상하좌우를 탐색하며 인접하고 같은 색상끼리 구역을 나누어 총 구역의 개수를 구하는 문제 이때 적록색약인 사람은 R,G를 구분하지 못한다. ​ 해결 전략: 1. 적록색약인 Case와 아닌 Case를 나누어 노드를 탐색 (적록색약인 경우는 'G'요소를 'R'로 할당해줌) 2. 주변의 인접한 노드를 탐색하기 위하여 BFS(너비 우선 탐색) 알고리즘을 사용 3. 방문했던 요소는 탐색하지 않는다. 4. BFS가 한번 돌때마다 cnt +=1 ​ Queue자료구조에 대한 이해: queue 안의 모든 요소가 없어질 때 까지 while문을 돌림 상하좌우로 탐색한 모든 요소가 co.. 2023. 3. 18.
[알고리즘] 합분해 (DP-GoldⅤ) 목적 : dp 테이블 손으로 써서 푸는 습관을 들이기 위해서 ​ 문제 설명(요약) : 0~N까지의 숫자 중 K개를 택해서 택한 숫자의 합이 N이 되는 경우의 수를 구하기 조건 -> 중복 허용, 숫자 위치만 바꾼 것은 다른 경우로 count ​ 해결 전략: 1. 머리로 풀다가 이차원 dp형태로 풀어야 겠다 싶어 손으로 풀기 시작 2. 1~6까지의 경우의 수를 직접 구해봄 (조합,순열) 3. 피보나치 수열 인줄 알았는데 단순 대각선 합이였음 4. 점화식 세움 5. 끝 ​ 직접 그려본 dp 테이블 : 점화식 : dp[i][j] = dp[i-1][j] + dp[i][j-1] ​ 2023. 3. 18.
[알고리즘] 가장 긴 증가하는 바이토닉 부분 수열 (DP-Gold IV) 목적 : 다른사람의 매우 직관적인 풀이를 복습하기 위해서 ​ 문제 설명(요약) : 증가 or 감소 , 증가+감소, 감소+증가 의 특징을 가진 바이토닉 수열 중에서 가장 긴 수열을 찾아 길이를 구하면 되는 문제 ​ 나의 시도 : 1. 가장 긴 증가 or 감소 수열에서 기울기 부호가 바뀌는 지점의 인덱스를 구해 그 후 가장 긴 반대 수열 길이 더하기 ​ 깨달은 것: 가장 긴 증가 수열이 아니더라도 가장 긴 바이토닉 수열이 될 수있다. 반대의 경우도 마찬가지 ​ 해결 전략: dp 배열에는 해당 인덱스 값마다 최대 길이가 들어있으므로 해당 시점에서의 증가수열길이 + 감소수열길이 -1 을 해주면 된다. 단 감소 수열은 top-down 방식으로 증가 수열의 길이를 할당 해줘야 겹치는 부분에서 길이 합을 구할 때 제.. 2023. 3. 18.
반응형