본문 바로가기

취준생341

Udemy - Javascript - Binary Tree Search Udemy - Javascript - Binary Tree Search Udemy JavaScript Tree 트리는 간선과 노드로 이루어져 있고, 노드들 간에 부모와 자식 노드라는 관계가 있다 1은 루트 노드이다 2와 3은 1의 자식 노드고, 1은 2와 3의 부모 노드다 트리가 아닌 것 이진 트리 / 이진 검색 트리 이진 트리 (Binary Tree) 이진 트리는 부모 노드가, 최대 2개의 자식 노드를 가지는 것이다 3개 이상의 자식 노드를 가지고 있으면 이진 트리가 아니다 이진 검색 트리 (Binary Search Tree) 이진 검색 트리는 정렬이 되어 있다 부모 노드보다 숫자가 적으면 왼쪽에 배치가 되어 있고, 크면 오른쪽에 배치가 되어 있다 루트 노드를 보면, 왼쪽에 있는 자식 노드는, 루트 노.. 2023. 2. 20.
Udemy : Python Selenium Udemy : Python Selenium Udemy Python Selenium Webdriver 웹에서 자동적으로 작업을 할 수 있도록 만드는 것 입력, 클릭, 스크롤 등 인간들이 웹에서 할 수 있는 것들을 자동으로 할 수 있다 Selenium 크롬 설치하기 셀레니움/ webdriver 설치하기 pip install selenium 그리고 pip install webdriver_manager 설치하기 webdriver.Chrome(service=Service(ChromeDriverManager().install())) 예전에는 크롬드라이버를, 크롬 버전에 따라서, 직접 다운로드를 받아야 했다 하지만 이제는 service=Service(ChromeDriverManager().install())를 통해 .. 2023. 2. 19.
5. 디자인 패턴 (MVC, MVP MVVM 패턴) 4. 디자인 패턴 (MVC, MVP MVVM 패턴) 출처 : 면접을 위한 CS전공지식 노트(책 / 강의) MVC 패턴 Model, View, Controller Model 어플리케이션의 정보, 데이터를 나타낸다 어플리케이션이 무엇을 할 것인지 정의한다 데이터, DB와 상호작용 (CRUD), 알고리즘 등 View 텍스트, 체크박스 등, 데이터를 유저들이 볼 수 있도록 시각화 하는 것이다 (UI) 모델이나 컨트롤러가 보여주려고 하는 모든 것들을 보여 준다 데이터가 존재해도, 유저가 읽을 수 없거나, 볼 수 없으면 무의미하 Controller 데이터와 비즈니스 로직 사이의 상호 동작 관리한다 이벤트, 매인 로직을 담당한다 사용자의 요청에 따라, 모델을 변경할 수 있다 컨트롤러와 관련된 뷰가 있으면, 모델이 어.. 2023. 2. 19.
[Python] 백준 2467 용액 🧑‍💻 [Python] 백준 2467 용액 Gold 5 - 이진 탐색 산성 용액과, 알칼리성 용액이 있으면, 어떠한 두 용액을 섞어서 0과 제일 가까운 용액을 만드는 것이다 여기서 산성은 산성끼리, 알칼리성은 알칼리성 용액끼리 섞을 수 있다 이진 탐색을 하기 위해서는 정렬을 꼭 해야 한다 두 용액을 섞어서, 전에 섞은 용액보다 0과 가깝다면, 두 용액과, 용액들을 섞어서 나온 숫자를 저장해야 한다 즉 3개의 변수를 지속적으로 수정해야 하는 것이다 코드 N = int(input()) array = list(map(int, input().split())) array.sort() left = 0 right = N - 1 current_min = abs(array[left] + array[right]) left.. 2023. 2. 18.
[Python] 백준 2512 예산 🧑‍💻 [Python] 백준 2512 예산 Silver 3 - 이진 탐색 예산 요청이 리스트로 주어진다. 그리고 국가가 사용할 수 있는 예산이 주어진다 요청 된 모든 예산들이 국가가 사용할 수 있은 예산 안에 들어가야 한다 그러기 위해서, 상한액을 정해서, 요청 리스트 안에 있는 예산들을 수정한다 코드 N = int(input()) array = list(map(int, input().split())) budget = int(input()) array.sort() left, right = 0, array[-1] if sum(array) 2023. 2. 18.
4. 디자인 패턴 (프록시 패턴) 4. 디자인 패턴 (프록시 패턴) 출처 : 면접을 위한 CS전공지식 노트(책 / 강의) 프록시 패턴 Proxy : 대변인 클라이언트가 서버에 요청을 하면, 서버 대신, 프록시가 응답을 해준다 즉 클라이언트는 프록시를 통해 서버를 간접적으로 사용하는 것이다 - 프록시 서버 프록시의 기능 클라이언트로부터 요청이 들어오면, 프록시는 실제 서비스 객체를 생성하고, 모든 작업을 생성한 객체들에게 위임한다 보안, 데이터 검증, 캐싱, 로깅 (기록) 보안 클라이언트, 즉 사용자들이 직접적으로 서비스를 사용하는 것이 아닌, 간접적으로 사용하는 것이다 즉, 익명 사용자들이 직접적으로 서비스를 사용하지 못 하게 하여, 실제 서버를 공격하는 것을 차단할 수 있다 CloudFlare은 프록시 서버를 통해 DDOS 공격을 방어.. 2023. 2. 17.
[Python] 백준 1967 트리의 지름 🧑‍💻 [Python] 백준 1967 트리의 지름 Gold 4 - DFS 두 노드 사이의 가중치들을 더했을 때에 가장 큰 숫자를 출력하는 것 여기서 1의 기준에서 가중치가 제일 큰 노드를 구한다 그 다음, 가중치가 제일 큰 노드를 시작으로 DFS를 하여, 제일 큰 가중치를 구한다 여기서 DFS를 하면 어디서든, 제일 끝에 있는 자식 노드에 가게 된다 문제풀이 첫 DFS를 한 후에,visited 리스트 다시 초기화 시켜야 한다 second_index = visited.index(max(visited))을 통해서 두번째 DFS를 할 때에, 시작 점을 찾는다 코드 import sys sys.setrecursionlimit(10 ** 9) def dfs(start, weight): for node, wei in.. 2023. 2. 16.
Udemy - Javascript - Stack, Queue Udemy - Javascript - Stack, Queue Stack & Queue 데이터 구조의 모음이다 좀 더 압축적인 데이터 구조이다 데이터를 추가 또는 빼낸다 Stack (스택) LIFO (Last In First Out) 제일 마지막으로 스택에 추가된 것이, 제일 먼저 나간다 예를 들어, 재귀에서, 콜스택 (Call Stack)처럼, 제일 마지막에 추가된 요소를 먼저 빼낸다 배열로 스택 구현하기 // 스택 만들기 var stack = [] stack.push('google') stack.push('instagram') stack.push('youtube') stack.pop() // youtube stack.pop() // instagram stack.pop() // google 스택은 sta.. 2023. 2. 16.
3. 디자인 패턴 (전략 패턴, 옵저버 패턴) 3. 디자인 패턴 (전략 패턴, 옵저버 패턴) 출처 : 면접을 위한 CS전공지식 노트(책 / 강의) 전략 패턴 (정책 패턴) 캡슐화한 알고리즘을 통해, 서로 교환해서 사용할 수 있는 패턴이다 즉 다양한 메소드들을 캡슐화를 한 후, 필요할 때마다 교환하여 사용하는 것이다 캡슐화는 클래스를 정의할 때, 내부의 속성과 메서드를 묶어서 하나의 단위로 처리하는 것이다. 전략 패턴이 없을 때에는 모든 메서드가 하나의 클래스에 들어간다 메서드가 많이 없을 때에는 괜찮지만, 많아질 경우 에러가 발생할 수 있다 전략 패턴 네비게이션 (컨택스트, context)을 이용할 때에, 다양한 방법으로 경로를 찾을 수 있다 (자동차 경로, 도보 경로 등) 각각의 경로들을 캡슐화를 하여, 각각의 클래스로 만들어 준다 경로 설정 인터.. 2023. 2. 16.