일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Random Undersampling
- Text generation
- SQL 데이터 분석 첫걸음
- OCSVM
- 병리 AI
- multi modal
- Fixed Learning
- Tomek links
- Gausian Density Estimation
- Clustering 기반 이상탐지
- Data Imbalance
- Grad-CAM
- One-Sided Selection
- Generative modeling
- Process Mining
- Meta heuristic
- auto encoder
- 딥러닝
- PM4Py
- 밀도 기반 이상탐지
- Digital Pathology
- 프로세스 마이닝
- XAI
- Petri net
- 국비지원교육
- Inatance segmentation
- Condensed neares neighbor rule
- Sequence data
- GAN
- 거리 기반 이상탐지
- Today
- Total
목록알고리즘 (10)
Create Opportunities

1. 더 맵게 (Heap) Heap은 이진트리 기반의 자료구조이며, max/min 값을 빠르게 찾기 위해 사용된다. Complete Binary Tree의 형태를 띄며, 부모 자식 노드 간에는 특정한 크기 관계가 성립한다. 문제 설명 N개의 수와 K값이 주어짐. 가장 작은 수 + (두 번째로 작은 수 * 2) → 하나의 수 모든 수가 K 이상이 되도록 → 얼마나 + 해야하는가? 모든 값을 K 이상으로 만들 수 없는 경우 → -1 리턴 (한 개만 남았는데, 그 값이 K 이상이 아닌 경우) 알고리즘 복잡도 최악의 경우 수가 하나 남을 때까지 섞어야 하는 경우 (n-1회) 섞은 값 정렬된 배열 어디 들어가야 하는가 (O(n)) → 전체 문제 풀이의 복잡도 : O(n^2) → 지나치게 높다. 난 위와 같이 풀었..
상담예약제 정답 해설 풀이계획 : Merge Sort와 비슷한 느낌으로 구현. string의 시간을 적절히 숫자로 바꿔주는 작업 필요. def parse_time(t): h, m = map(int, t.split(':')) return 60*h + m def solution(booked, unbooked): booked = [(parse_time(t), name) for t, name in booked] + [(1000000, None)] unbooked = [(parse_time(t), name) for t, name in unbooked] + [(1000000, None)] booked.sort() unbooked.sort() b, u, t, answer = 0, 0, 0, [] while b < l..

어떤 자료구조를 택하느냐에 따라서 적용 가능한 알고리즘이 달라진다. 1. 완주하지 못한 선수 (Hash) Hash 특징을 살펴보자. 이름 대신에 번호가 주어졌다면? → 선형 배열 (인덱스로 몇 번째 원소에 접근 가능하다.) 배열의 인덱스 말고 문자열로 접근할 수 있는 좋은 자료구조는 뭐가 있을까? → Hash!!! 문자열을 key로 보고 hash table에 mapping 시킬 수 있는 자료구조. 각각의 key값은 hash function으로 mapping 가능. hash bucket이 많을수록 다른 버킷에 사상될 가능성이 높아질 것임. 같은 버킷에 들어가면 충돌이 일어남. Python의 dictionary를 생각해볼 수 있다. dictionary를 구현할 때 내부적으로 Hash table을 이용하기 때..

List 형태로 주어진 term의 형태는 ['A 6', 'B 12', 'C 3'] 와 같은 형태이다. 이를 Dictionary로 아래와 같이 변환할 수 있다. termsInfo = dict() term = term.split() termsInfo[term[0]] = int(term[1]) * 28 #(x28은 month to day를 위해서) Lv. 1 def dateToDay(date): y, m, d = map(int, date.split(".")) return (y * 12 * 28) + (m * 28) + d def solution(today, terms, privacies): answer = [] # today today = dateToDay(today) # terms termsInfo = di..

Lv. 2 내 풀이 (시간 초과) def solution(numbers): answer = [] for i in range(len(numbers)-1): num = numbers[i] for j in range(i, len(numbers)): if numbers[j] > num: answer.append(numbers[j]) break if j == len(numbers)-1: answer.append(-1) answer.append(-1) return answer 단순히 for문으로 풀었다. 효율적인 정답 풀이 def solution(numbers): stack = [] answer = [-1] * len(numbers) for i in range(len(numbers)): while stack and..

Lv. 1 내 풀이 import string def solution(s, skip, index): answer = '' for spell in s: for i in range(index): spell = string.ascii_lowercase[(string.ascii_lowercase.index(spell) + 1) %26] if spell in skip: spell = string.ascii_lowercase[(string.ascii_lowercase.index(spell) + 1) %26] answer += spell return answer 왜 안되는지 아직 이해 못함. 정답 풀이 from string import ascii_lowercase def solution(s, skip, index): ..

Lv. 2 간단해 보였지만, while x=y: 정도밖에 생각을 못했다 정답 풀이 구현을 보고 놀람. 정답 풀이 def solution(x, y, n): answer = 0 s = set() s.add(x) while s: if y in s: return answer nxt = set() # new set for i in s: if i+n

Lv. 2 내 풀이 (오답) # n 미터짜리 벽 -> n 개의 구역으로 나눔. (1~n) # 페인트를 다시 칠해야 할 구역 정함. # 페인트 롤러의 길이 m 미터 def solution(n, m, section): answer = len(section) start = section[0] for i in range(len(section)): if m >= section[i+1] - start + 1: answer -= 1 else: start = section[i+1] return answer 왜 틀렸나? 이상한 것에 집착해서. : (n-m+1) 번째 이후의 페인트 여부는 좀 다르게 봐야한다고 생각했음. 정답 풀이 def solution(n, m, section): answer = 1 start = sec..