본문 바로가기

분류 전체보기383

[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.
[Python] 백준 1520 내리막길 🧑‍💻 [Python] 백준 1520 내리막길 Gold 3 - DFS DFS는 확실히 알았으나, 이걸 어떻게 DP로 풀어야 할지 몰랐다 1) 50 ▶️ 35 ▶️ 30 ▶️ 27 ▶️ 24 ▶️ 22 ▶️ 15 ▶️ 10 2) 50 ▶️ 45 ▶️ 37 ▶️ 32 ▶️ 20 ▶️ 17 ▶️ 15 ▶️ 10 3) 50 ▶️ 45 ▶️ 37 ▶️ 30 ▶️ 25 ▶️ 20 ▶️ 17 ▶️ 15 ▶️ 10 위를 보면, 15 ▶️ 10 은 3 경로 모두 겹친다 그리고, 20 ▶️ 17 ▶️ 15 ▶️ 10은 2번과 3번이 겹친다 겹치는 부분은 한번만 탐색을 하면 된다 즉 이미 방문을 했다면, 10까지의 경로는 겹치는 것이다 즉 겹치는 경로를 굳이 한번 더 탐색할 필요가 없다 코드 import sys sys.se.. 2023. 2. 15.
Udemy : Python 스포티파이 재생목록 Udemy : Python 스포티파이 재생목록 설명 팝 음악 기간별 톱 100 차트를 통해서 음악 100개 가지고 오기 스포티파이 uri로 트랙들을 저장하여, 스포티파이의 플레이 리스트에 음악 넣기 from bs4 import BeautifulSoup import requests import os import dotenv dotenv.load_dotenv() date = "20100217" # input("Which year do you want to travel to? Type the date in this format YYYYMMDD: \n") response = requests.get( f"https://www.officialcharts.com/charts/singles-chart/20140216/.. 2023. 2. 15.
2. 디자인 패턴 (이터레이터 패턴, 의존성 주입) 2. 디자인 패턴 (이터레이터 패턴, 의존성 주입) 출처 : 면접을 위한 CS전공지식 노트(책 / 강의) 이터레이터 패턴 (iterator Pattern) 이터레이터를 사용하여 콜렉션의 요소들에 접근하는 디자인 패턴이다 즉 순회만 할 수 있다면, 어떠한 자료 구조든 이터레이터라는 하나의 인터페이스로 순회가 가능하다 한번에 여러 자료 구조를 순회할 수 있다 콜랙션 : 컨테이너라고도 불리면서, 배열, 트리 등, 동일한 요소들의 집합을 말한다 이터레이터 프로토콜 : 순회가 가능한 객체들을 순회할 때 쓰이는 규칙 이터러블한 객체 : 반복 가능한 객체로 배열을 일반화한 객체 의존성 주입 참고 의존 관계란, 서로 의존하는 것이다. 즉 하나가 바뀌면, 다른 하나도 꼭 바뀌어 하는 것 의존성 주입 전 A 와 B, A와.. 2023. 2. 15.
[Python] 백준 24482 알고리즘 수업 🧑‍💻 [Python] 백준 24482 알고리즘 수업 Silver 2 - DFS DFS 문제이다 깊이 우선 탐색으로, 탐색을 할 때마다 1씩 더해주면 된다 연결이 아예 안 되어 있을 때에는 -1 이다 내림차순 문제풀이 DFS 코드를 짜면 된다 코드 import sys sys.setrecursionlimit(10 ** 6) input = sys.stdin.readline def dfs(start, count): visited[start] = count for cur in graph[start]: if visited[cur] == -1: dfs(cur, count + 1) N, M, start = map(int, input().split()) visited = [-1] * (N + 1) graph = [[].. 2023. 2. 14.