분류 전체보기

11주차 일정 10/16 - 10/20 미니프로젝트 4차 10/16 - 10/20 미니프로젝트 4차 제목: 절망스러웠던 4차 미프 사유: 미프를 해내기엔 턱 없이 부족한 내 자신 4차 미니프로젝트 중 이번 5일 동안은 문의 유형 자동 분류 모델을 만드는 것이 목표였다. 자연어 처리.. 난 배운 게 없는데.. 내가 해낼 수 있을까..?라는 절망감과 함께 시작! 하자마자 이게 뭐야!!!!!! 속으로 냅다 비명 자연어 처리 경험이 거의 전무한 내가 문제겠지만 진짜 1000000번쯤 소리를 지르고 싶었음.. 사실 머신러닝이던 딥러닝이던 모델링은 거의 정해진 틀이 있다 보니 모델 만드는 건 비교적 쉽지만(튜닝은 나중) 전처리가 진짜 얼마나 중요한지 또 또 깨닫는 시간.. 역시 공부는 실전이라고 프로젝트하면서 직접..
구간 합 합 배열을 이용하여 시간 복잡도를 더 줄이기 위해 사용하는 특수한 목적의 알고리즘 구간 합의 핵심 이론 구간 합 알고리즘을 활용하려면 먼저 합 배열을 구해야 함 합 배열 S 정의 S[i] = A[0] + A[1] + A[2] + … + A[i-1] + A[i] # S[i]는 A[0]부터 A[i]까지의 합 인덱스 0 1 2 3 4 5 배열 A 15 13 10 7 3 12 합 배열 S 15 28 38 45 48 60 합 배열 S를 만드는 공식 S[i] = S[i-1] + A[i] i에서 j까지 구간 합을 구하는 공식 S[j] - S[i-1] ex) A[2]부터 A[5]까지의 합 = A[0]부터 A[5]까지의 합 - A[0]부터 A[1]까지의 합 = S[5] - S[1] [문제 003] 구간 합 구하..
10986번: 나머지 합 수 N개 A1, A2, ..., AN이 주어진다. 이때, 연속된 부분 구간의 합이 M으로 나누어 떨어지는 구간의 개수를 구하는 프로그램을 작성하시오. 즉, Ai + ... + Aj (i ≤ j) 의 합이 M으로 나누어 떨어지는 (i, j) www.acmicpc.net 코드 n, m = map(int, input().split()) # n개의 수, M으로 나누기 A = list(map(int, input().split())) # n개의 수로 이루어진 원본 배열 S = [] # 합 배열 M = [] # 합 배열 S를 M으로 나눈 나머지 answer = 0 # M으로 나눠지는 (i, j) 쌍의 개수 temp = 0 for i in A: temp += i S.append(temp) # ..
11660번: 구간 합 구하기 5 첫째 줄에 표의 크기 N과 합을 구해야 하는 횟수 M이 주어진다. (1 ≤ N ≤ 1024, 1 ≤ M ≤ 100,000) 둘째 줄부터 N개의 줄에는 표에 채워져 있는 수가 1행부터 차례대로 주어진다. 다음 M개의 줄에는 네 www.acmicpc.net 코드 import sys input = sys.stdin.readline n, m = map(int, input().split()) # 표의 크기, 합을 구해야 하는 횟수 A = [] # NxN 리스트 for _ in range(n): A.append(list(map(int, input().split()))) # 합 배열 D 구하기 D = [[0] * (n+1) for _ in range(n+1)] # DP 테이블 for..
배열 메모리의 연속 공간에 값이 채워져 있는 형태의 자료구조 인덱스를 사용하려 값에 바로 접근 가능 새로운 값을 삽입하거나 특정 인덱스에 있는 값을 삭제하기 어려움 값을 삽입하거나 삭제하려면 해당 인덱스 주변에 있는 값을 이동시키는 과정이 필요함 배열의 크기는 선언할 때 지정할 수 있으며, 한 번 선언하면 크기를 늘리거나 줄일 수 없음 구조가 간단하므로 코딩 테스트에서 많이 사용함 리스트 값과 포인터를 묶은 노드라는 것을 포인터로 연결한 자료구조 인덱스가 없으므로 값에 접근하려면 Head 포인터부터 순서대로 접근해야 함 즉, 값에 접근하는 속도가 느림 포인터로 연결되어 있으므로 데이터를 삽입하거나 삭제하는 연산 속도가 빠름 선언할 때 크기를 별도로 지정하지 않아도 됨 즉, 리스트의 크기는 정해져 있지 않..
시간복잡도 시간복잡도: 주어진 문제를 해결하기 위한 연산 횟수 시간 복잡도 유형 빅-오메가$( \Omega(n))$: 최선일 때(best case)의 연산 횟수 빅-세타$(\theta(n))$: 보통일 때(avarge case)의 연산 횟수 빅-오$(O(n))$: 최악일 때(worst case)의 연산 횟수 연산 횟수 계산 방법 연산 횟수 = 알고리즘 시간 복잡도 n값에 데이터의 최대 크기를 대입하여 도출 시간 복잡도 도출 기준 상수는 시간 복잡도 계산에서 제외 ex) $ 3N $ → $ N $ 가장 많이 중첩된 반복문의 수행 횟수가 시간 복잡도의 기준이 됨 ex) $ N^2 + 10N $ → $ N^2 $ 디버깅 디버깅(debugging): 프로그램에서 발생하는 문법 오류나 논리 오류를 찾아 바로잡는 ..
dduniverse
'분류 전체보기' 카테고리의 글 목록 (6 Page)