본문 바로가기

분류 전체보기69

11659 처음으로 시간 초과가 난 문제제한 시간과 최대 건수 계산을 기반으로 로직 짜기 ## 🔒 문제 003. 구간 합 구하기 #11659## ❗시간 초과n, m = map(int, input().split())numlist = list(map(int, input().split()))tot = 0for i in range (1, m+1): i, j = map(int, input().split()) tot = sum(numlist[i-1:j]) print(tot)''' 모범답안## 최대 건수가 10만건이고 시간 제한이 0.5초 이므로, 구간 마다 합을 매번 계산하면 끝낼 수 없음## 수를 입력받음과 동시에 합 배열 생성import sysinput = sys.stdin.readline ## 반복문으로 입력 .. 2024. 6. 28. 16:22
11720 ## 🔒 문제 001. 숫자의 합 구하기 #11720n = int(input())nums = input()num_list = [0 for i in range(1, n+1)]for i in range (1, n+1): num_list[i-1] = nums[i-1]num_list_new = [int(i) for i in num_list]t = sum(num_list_new)print(t)''' 모범 답안n = input()numbers = list(input())sum = 0for i in numbers: sum = sum + int(i)print(sum)''' 2024. 6. 27. 16:56
심화 연습 - 1157 ## 1157 단어 공부word = input()word = word.lower() ## 대소문자 구분 X를 위한 처리word_len = len(word)alphabet_list = [chr(i) for i in range(ord('a'),ord('z')+1)]alphabet_cnt = [0 for i in range (1, 27)]alphabet_set = dict(zip(alphabet_list,alphabet_cnt))for i in range (0, word_len): if word[i] in alphabet_set: alphabet_set[word[i]] = alphabet_set[word[i]] + 1max_alphabet = [k for k, v in alphabet_set.item.. 2024. 6. 26. 22:07
그림으로 개념을 이해하는 알고리즘 - CH 11 CH 11 더 공부해야할 것  - 이진 탐색 트리 : 왼쪽에는 더 작은 값은 가진 정점, 오른쪽에는 더 큰 값을 가진 정점이 위치  > 항목 탐색 시 평균적으로 O(log n), 최악의 경우 O(n)  > 단점 : 임의 접근 불가, 트리가 얼마나 균형 잡혀 있는가에 따라 평균 성능 달라짐 ** B-트리 : 하나의 노드가 여러 데이터를 가질 수 있는 트리** 레드-블랙 트리 : 스스로 균형을 맞추는 이진 탐색 트리** 힙 트리 : 가장 크거나 가장 작은 값을 빠르게 찾기 위해 만든 트리** 스플레이 트리 : 자주 탐색하는 키를 가진 노드가 루트에 가깝게 위치한 트리  - 역 인덱스 : 데이터 값과 위치를 매핑한 자료 구조 (검색 시스템에 유용)ex. 안녕 이라는 단어 검색 시 웹페이지 A, B를 보여줌  .. 2024. 6. 26. 17:40
그림으로 개념을 이해하는 알고리즘 - CH 10 CH 10 KNN 알고리즘 - KNN 알고리즘 : 가장 가까운 k개의 이웃과 비슷한 종류로 분류  1) 분류 : 그룹으로 나누기  2) 회귀 : (숫자로 된) 반응 예측 - 특징 추출 : 항목을 비교 가능한 몇 개의 숫자로 만드는 일 ** 코사인 유사도 : 두 벡터 사이의 각도 측정** 스팸 필터 : 나이브 베이즈 분류기 알고리즘 사용참고자료Hello Coding 그림으로 개념을 이해하는 알고리즘 2024. 6. 26. 17:14
그림으로 개념을 이해하는 알고리즘 - CH 09 CH 09 동적 프로그래밍  - 동적 프로그래밍 : 하위의 작은 문제(격자)를 풀어 이를 이용해 더 큰 문제를 푸는 방법   > 제한 조건이 주어졌을 때 무언가 최적화 해야하는 경우 유용   > 하위 문제가 서로 의존하지 않는 경우에만 사용 가능 * 최장 공통 부분 문자열 : 공통으로 가지는 가장 긴 부분 문자열* 최장 공통 부분열 : 순서가 바뀌지 않고 공통으로 들어간 글자의 갯수가 가장 긴 경우 ** 래밴슈타인의 거리 : 두 문자열의 유사성 측정 참고자료Hello Coding 그림으로 개념을 이해하는 알고리즘 2024. 6. 26. 17:09
그림으로 개념을 이해하는 알고리즘 - CH 08 CH 08 탐욕 알고리즘 - 탐욕 알고리즘 : 각각의 단계에서 최적의 수 찾기 (=국소최적해)  > 최종적으로 전역 최적해를 산출 - 근사 알고리즘 : 정답과 가장 비슷한 값 유추 (정확한 답 계산에 시간이 너무 오래걸릴 경우)  > 성능 기준 : 얼마나 빠른지, 최적해에 얼마나 가까운지 - 집합 커버링 문제 : 가능한 모든 집합을 계산해야 풀이 가능  > 모든 경우의 수를 따져서 최단/최소를 구하는 문제 => NP-완전 문제 ** NP-완전 문제 특징1) 항목에 적을 때는 알고리즘이 빠른데, 항목이 늘어나면 갑자기 느려짐2) 'X의 모든 조합'과 같은 표현3) 더 작은 하위 문제로 변환할 수 없어 X의 가능한 모든 버전을 계산해야하는 경우 ## CH 08. 탐욕 알고리즘states_needed = se.. 2024. 6. 26. 16:57
1546 ## 🔒 문제 002. 평균 구하기 #1546n = int(input())score_lst = list(input().split())score_lst = [int(i) for i in score_lst]score_max = int(max(score_lst))score_lst_new = []for i in range (1, n+1): score_lst_new.append(score_lst[i-1] / score_max * 100) avg = sum(score_lst_new) / len(score_lst_new)print(avg)''' 모범 답안n = input()mylist = list(map(int, input().split()))mymax = max(mylist)sum = sum(mylist)pr.. 2024. 6. 25. 16:48
배열 연습 - 5597 ## 5597 과제num_lst = [i+1 for i in range(30)]for i in range (1, 29): num_i = int(input()) num_lst.remove(num_i)print(min(num_lst))print(max(num_lst)) 2024. 6. 25. 14:47