공부/AI 15

알고리즘

알고리즘(algorithm)이란?특정 문제를 해결하기 위해 정해진 일련의 절차나 방법을 공식화한 형태로 표현한 것.알고리즘은 입력, 출력, 명확성, 유한성, 효율성의 조건을 만족해야한다.자연어, 의사코드(pseudo-code), 순서도, 프로그래밍언어 등으로 표현공간복잡도와 시간복잡도를 고려해 알고리즘을 짜야 함. "efficiency"  Sorting algorithm정렬 알고리즘은 주어진 데이터를 정해진 순서대로 재배열하는 알고리즘이다. (ascending, descending)데이터간의 비교가 가능해야 한다  버블정렬 (Bubble Sort)인접한 두 원소를 비교하면서 큰 값을 뒤로 보내며 정렬이 이루어짐 (오름차순 기준)시간복잡도: O(N^2) - 효과적이지 않다

공부/AI 2024.12.11

CS 과제

1. Python List method의 시간복잡도기능설명시간복잡도a.append(value)마지막에 요소 추가O(1)a.count(value)리스트에 있는 value의 개수 반환O(n)a.remove(value)리스트에서 가장 먼저 등장하는 value 삭제O(n)a.extend(b)리스트 a에 리스트 b를 연장O(k)a.reverse()리스트 a의 요소들의 순서를 거꾸로 바꿔줌O(n)  2. CircularQueue 구현해보기import numpy as np# circular queue, 원형큐class CircularQueue: def __init__(self, size): self.buffer = np.zeros(size, dtype=int) self.max_size ..

공부/AI 2024.12.07

자료구조 Data Structure

자료구조데이터를 효율적으로 저장하고 관리하며 처리하기 위한 방법적절한 자료구조를 선택하면 프로그램의 성능을 크게 향상시킬 수 있다 ADT(추상 자료형, Abstract Data Type)데이터와 그 데이터에 대한 연산을 추상적으로 정의한 것 예를들어 Stack 이라는 ADT는 데이터를 쌓고(push) 빼는(pop) 동작을 할 수 있다내부적으로 배열을 사용하든, 리스트를 사용하든 상관없다. 사용자는 '쌓고 빼는' 기능만 알면 된다  효율적인 자료구조인지 평가하는 두가지 요소시간복잡도 (Time complexity) - 얼마나 빨라?공간복잡도 (Space complexity) - 메모리를 얼마나 적게 사용했어? 복잡도를 표현하는 방법Big Oh (O): 알고리즘이 절대로 특정 시간 이상 걸리지 않는다는 것을..

공부/AI 2024.12.05

float 타입의 저장 방식, 부동소수점, IEEE 754

부호 : 양수 0, 음수 1지수 : 2^(지수부 - 1) + 정규화 후 지수가수 : 정규화 후 가수   정규화1 + 0.1234 x 10^2 의 형식으로 만든다  32비트 컴퓨터에서 12.375 가 어떻게 저장되는지 계산해보자 12를 이진수로 표현하면 11000.375를 이진수로 표현하면 0.011더하면 1100.011 x 2^0정규화하면 1.100011 x 2^3부호는 양수니까 0지수는 2^(8 - 1) + 3 = 127 + 3 = 130 = 10000010가수는 1.100011 에서 1을 빼고 100011결과는 0 10000010 10001100000000000000000 32비트, -118.625118(10) = 1110110(2)0.625(10) = 0.101(2)1110110.101 x 2^01..

공부/AI 2024.12.04

컴퓨터 공학 (CSE) - Computational Thinking

CES는 컴퓨터를 이용하여 주어진 문제를 계산 가능하게 하는 것Computational Thinking : 컴퓨터가 이해할 수 있게 문제를 정의하는 것Problem Solving : 컴퓨터가 효율적으로 계산할 수 있게 하는 것  Computational ThinkingDecomposition (분해) : 전체 문제를 작은 여러가지 문제로 나누는 과정Pattern Recognition (패턴인식) : 주어진 문제에서 반복적으로 나타나는 패턴을 찾는 과정Abstraction (추상화) : 문제에서 해결해야할 주요한 정보를 수치화(또는 계산 가능하게) 하는 과정Algorithmic Thinking (알고리즘) : 문제 해결 방식을 step-by-step으로 만드는 과정  예제1) 도서관에서 책 추천 시스템 구..

공부/AI 2024.12.04

통계학 Statistics 공부 for AI - 2

노름(Norm)노름(Norm) 이란 벡터의 크기 또는 길이를 측정하는 방법입니다. 벡터가 원점에서 얼마나 떨어져 있는지 나타내는 값이라고 생각할 수 있습니다. 노름의 종류노름에는 여러 가지 종류가 있으며, 가장 일반적으로 사용되는 노름은 다음과 같습니다.L1 노름: 각 성분의 절댓값의 합입니다. 맨해튼 거리라고도 합니다.L2 노름: 각 성분의 제곱의 합의 제곱근입니다. 유클리드 거리라고도 합니다.L∞ 노름: 각 성분의 절댓값 중 가장 큰 값입니다. 최대 노름이라고도 합니다. ||x||p: 벡터 x의 Lp 노름 n: 벡터 x의 차원 (성분의 개수) xi: 벡터 x의 i번째 성분 p: 노름의 차수 (1, 2, ∞ 등) L1 노름 수식   L2 노름  L∞ 노름  노름에 따른 기하학적 의미 유사도유사도(Sim..

공부/AI 2024.12.01

통계학 Statistics 공부 for AI - 1

합의 법칙두 사건 𝑨와 𝑩가 상호 배타적(동시에 발생할 수 없는 경우)일 때, 사건 𝑨가 일어나는 경우의 수가 m이고, 사건 𝑩가 일어나는 경우의 수가 n이면, 사건 𝑨또는 사건 𝑩가 일어나는 경우의 수의 총합은 m + n 주사위를 한 번 던질 때 짝수가 나오거나 홀수가 나오는 경우의 수짝수 3가지 + 홀수 3가지 = 6가지 곱의 법칙두 가지 이상의 사건이 동시에 일어나는 경우의 수 꽃병 3개, 장미 6송이가 있을 때, 꽃병에 장미를 꽃기 위해 꽃병 한 개와 장미 한 송이를 동시에 택하는 경우의 수3 x 6 = 18 옷장에 셔츠 3벌, 바지 2벌, 신발 2켤레가 있다. 셔츠, 바지, 신발을 하나씩 골라 입을 때, 가능한 옷차림의 경우의 수는?3 x 2 x 2 = 12가지 순열 (Permutat..

공부/AI 2024.11.30

파이썬 컨테이너 Container 튜플 tuple

튜플 tuple ( , ) 파이썬에서 튜플은 순서가 있고 변경할 수 없는 객체의 모음입니다. 즉, 한 번 생성된 튜플은 그 내용을 수정할 수 없습니다. 튜플은 괄호 ()를 사용하여 생성하고, 각 요소는 쉼표 ,로 구분합니다. 특징 순서가 있다: 튜플의 요소들은 생성된 순서대로 유지됩니다.변경 불가능: 튜플은 생성 후에는 요소를 추가, 삭제, 수정할 수 없습니다.다양한 자료형: 튜플은 숫자, 문자열, 불리언, 심지어 다른 튜플이나 리스트와 같은 다양한 자료형의 요소를 포함할 수 있습니다.중복 허용: 튜플은 같은 값을 가진 요소를 여러 개 포함할 수 있습니다. 튜플 생성 1. 괄호 사용 ( , )# 빈 튜플empty_tuple = ()# 정수형 튜플numbers = (1, 2, 3, 4, 5)# 문자열 튜플..

공부/AI 2024.11.28

파이썬 컨테이너 Container 딕셔너리 dict

딕셔너리 dict { : } 딕셔너리 생성 (Create) 1. 중괄호 {} 사용# 빈 딕셔너리 생성empty_dict = {}print(empty_dict)# 키-값 쌍을 직접 지정하여 딕셔너리 생성person = { "name": "John Doe", "age": 30, "city": "New York"}print(person)  2. dict() 생성자 사용 키워드 인자를 사용하여 키-값 쌍을 지정# 키워드 인자를 사용하여 딕셔너리 생성person = dict(name="John Doe", age=30, city="New York")print(person) 리스트나 튜플의 리스트를 사용하여 딕셔너리를 생성# 리스트의 리스트를 사용하여 딕셔너리 생성data = [["name", "Jo..

공부/AI 2024.11.25

파이썬 컨테이너 Container 리스트 list

리스트 (list)  [ , ] 리스트의 다양한 생성 방법 (Create) 빈 리스트 생성empty_list = []print(empty_list) # [] 출력 요소를 직접 지정하여 리스트 생성numbers = [1, 2, 3, 4, 5]fruits = ["apple", "banana", "cherry"]mixed_list = [1, "hello", True, 3.14]print(numbers) # [1, 2, 3, 4, 5] 출력print(fruits) # ['apple', 'banana', 'cherry'] 출력print(mixed_list) # [1, 'hello', True, 3.14] 출력 list() 함수 활용list() 함수는 다른 시퀀스형 데이터 타입 (문자열, 튜플, range ..

공부/AI 2024.11.24
반응형