2024/02 20

알고리즘 01. 선형검색, 이진검색, 순위, 버블정렬, 삽입정렬, 선택정렬, 최댓값/최솟값/최빈값

알고리즘이란? 알고리즘, 또한 셈법이란, 수학과 컴퓨터과학, 언어학 또는 엮인 분야에서 어떠한 문자를 풀어맺기 위해 정해진 일련의 절차나 방법을 공식화한 형태로 표현한 것, 계산을 실행하기 위한 단계적 절차를 의미한다. 즉, 문제풀이에 필요한 계산절차 또는 처리과정의 순서를 뜻한다. 선형검색이란? 선형으로 나열되어 있는 데이터를 순차적으로 스캔하면서 원하는 값을 찾는다. def linearSearch(nums): print('선형검색 시작!') n = 0 searchNum = int(input('찾으려는 숫자 입력: ')) searchNumIdx = -1 while True: if n == len(nums): searchNumIdx = -1 break elif nums[n] == searchNum: se..

자료구조와 알고리즘 기초 03. 딕셔너리

1. 딕셔너리는 키(Key)와 값(Value)을 이용해서 자료를 관리한다. 2. 딕셔너리는 {}를 이용해서 선언하고, '키:값'의 형태로 아이템을 정의한다. students = {1: '유재석', 2: '김종국', 3: '하하', 4: '전소민', 5: '이광수'} for key in students: print(f'{key} : {students[key]}') 3. key와 value에는 숫자, 문자(열), 논리형 뿐만 아니라 컨테이너 자료형도 올 수 있다. 4. 단, key에 immutable 값은 올 수 있지만 mutable 값은 올 수 없다.(key값에는 변경이 불가능한 만 올 수 있다.) 5. 딕셔너리는 key값을 이용해서 value를 조회한다. 6. 존재하지 않는 key값을 조회 시 error..

자료구조 기초 정리 02. 튜플의 활용

1. 튜플이란 리스트와 비슷하지만 아이템 변경이 불가능하다. 리스트(List)는 { 'a' , 'b', 'c' } 튜플(Tuple)은 ( 'a', 'b', 'c' ) 2. 튜플은 '()'를 이용해 선언하고, 데이터 구분은 ','를 이용한다. 3. 튜플에는 숫자, 문자(열), 논리형 등 모든 데이터를 같이 저장할 수 있다. 4. 튜플에 또 다른 컨테이너 자료형 데이터(튜플)를 저장할 수도 있다. 5. 튜플의 아이템도 인덱스를 통해 조회할 수 있다. 6. in, not in 키워드를 사용하면 아이템의 존재 유/무를 알 수 있다. students = ('유재석', '김종국', '하하', '전소민', '이광수') # students2 = ['정준하', '박명수', '정형돈', '조세호'] # # result =..

자료구조 기초 정리 01. 튜플/딕셔너리/세트의 정의, 리스트의 활용

1. 여러 개의 데이터가 묶여 있는 자료형을 컨테이너 자료형이라고 하고, 이러한 컨테이너 자료형의 데이터 구조를 자료구조라고 한다. 2. 자료구조는 각각의 컨테이너 자료형에 따라서 차이가 있으며, 파이썬에서는 대표적으로 리스트(List), 튜플(Tuple), 딕셔너리(Dic), 세트(Set)가 있다. 3. 튜플은 리스트와 거의 같지만, 한 번 데이터가 정해지면 바꿀 수가 없다 4. 딕셔너리는 키와 값 쌍으로 이뤄짐 5. 셋은 리스트/튜플과 비슷하지만, 중복된 데이터가 허용되지 않음 6. 리스트는 배열과 같이 여러 개의 데이터를 나열한 자료구조이다. 중복 허용, 데이터 수정 가능 7. '[]'를 이용해 선언하고, 데이터 구분은 ','를 이용한다. 8. 숫자, 문자(열), 논리형 등 모든 기본 데이터를 같이..

Track3) QnA 시스템 개발 실제 적용사례(작성중)

소개 S사 모바일 보안 솔루션의 SDK개발자 가이드 검색 시스템 다양한 어플리케이션별로 제작에 필요한 모바일 디바이스의 API 메소드 정보를 제공 문제정의 1. 고객 특화(Customer-specific) - 검색의 소스가 되는 것이 고객의 특화데이터(LLM의 학습 과정에서 사용되지 않았던 데이터)에 대한 대응을 할 수 있어야 함 2. 주기적인 업데이트 정보를 즉각적으로 반영할 수 있어야 함 3. 답변에는 거짓이 없어야 함 -> 고객특화데이터를 기반으로 거짓이 없는 Q&A시스템을 만드는 것 해결전략 1, 2. 고객 특화 데이터 및 주기적인 업데이트에 대한 대응 -> RAG(Retrieval Augmented Generation)을 통한 해결 - 고객 특화 문제만 있었다면 파인 튜닝 또한 해결방법이 될 수..

AWS/AWS builders 2024.02.24

Track2) FMOps/LLMOps와 MLOps 차이점 비교 및 생성형 AI 운영하기(작성중)

MLOps란? - 머신러닝의 개발 및 운영을 효과적으로 관리하고 협업 기반의 머신러닝 솔루션을 제공하기 위한 사람, 기술 및 프로세스의 조합 - 단순한 기술 솔루션이 아닌 사람과 프로세스를 고려한 모델 구축, 학습, 배포, 모니터링, 관리 및 거버넌스를 자동화하고 표준화하기 위한 운영 방식 - 엔드투엔드 머신러닝 수명주기를 간소화하고 데이터과학자 및 MLOps팀의 생산성을 높이는 동시에 높은 모델정확도를 유지하고 보안 및 규정준수를 강화하는데 도움 - 머신러닝 모델을 운영환경에 효과적이고 일관되게 배포하고 비즈니스 가치를 끌어올릴 수 있음 사례 1: SKT - 에이닷 - 온프레미스 데이터센터에서 시작, 데이터사이언티스트는 데이터센터에서 학습한 모델을 아마존 S3에 업로드, 업로드된 모델은 AWS Step..

AWS/AWS builders 2024.02.23

기초수학 정리 01. 최대공약수부터 순열, 조합, 확률까지

1. 유클리드 호제법을 이용해서 최대공약수를 구할 수 있다. 유클리드 호제법: x,y의 최대공약수는 y, r(x%y)의 최대공약수와 같다. # 유클리드 호제법을 이용해서도 최대공약수를 구할 수 있다. num1 = int(input('1보다 큰 정수 입력: ')) num2 = int(input('1보다 큰 정수 입력: ')) temp1 = num1 temp2 = num2 while temp2 > 0: temp = temp2 temp2 = temp1 % temp2 temp1 = temp print('{}, {}의 최대공약수: {}'.format(num1, num2, temp1)) for n in range(1, temp1 + 1): if temp1 % n == 0: print('{}, {}의 공약수: {}'..

파이썬 중급 05. 파일 읽고 쓰기

1. open(), read(), write(), close()를 이용해 파일의 내용을 열고, 읽고, 쓰고, 닫을 수 있다. import time lt = time.localtime() dateStr = f'[{lt.tm_year}년 {lt.tm_mon}월 {lt.tm_mday}일]' todaySchedule = input('오늘 일정: ') file = open('C:/Users/Python/pycharm/pythonProject/005/test2.txt','w', encoding='UTF-8') # encoding = 'UTF-8'옵션을 추가해주지 않으면 깨져서 입력된다 # 'w'는 쓰기 모드 # 'r'는 읽기 모드, 파일이 없으면 에러가 난다 file.write(dateStr + todaySched..

파이썬 중급 04. 상속, 오버라이드, 다중 상속, 예외

1. 클래스는 다른 클래스를 '상속'해서 내 것처럼 사용할 수 있다. 2. java나 javascript에서는 class ClassName extends ExtendedClass처럼 extends를 사용하지만, 파이썬에서는 class ClassName(ExtendedClass)처럼 표시하면 된다. class NormalCar: def drive(self): print('[NormalCar] drive() called!!') def back(self): print('[NormalCar] back() called!!') class TurboCar(NormalCar): def turbo(self): print('[TurboCar] turbo() called!!') tc1 = TurboCar() tc1.turb..

파이썬 중급 03. 객체 지향 프로그래밍, 클래스, 얕은 복사와 깊은 복사

1. 객체 지향 프로그램에서 객체는 '속성'과 '기능'으로 구성된다. 계산기(calculator)의 경우, 속성 : 숫자(int나 float), 기능 : 덧셈, 뺄셈, ... (add(n1,n2), sub(n1,n2) ...) 결과적으로 계산기(object) = 속성(attribute) + 기능(function) 2. 객체는 클래스에서 생성된다. 클래스를 통해 생성된 객체는 인스턴스라고 한다. 3. 객체는 코드 재사용, 모듈화를 위해 사용된다. 4. 클래스는 class 키워드와 속성(변수) 그리고 기능(함수)를 이용해서 만든다. 5. 인스턴스를 생성할 때, java나 js와 달리 new 키워드 없이 써도 된다. 6. constructor 함수를 사용하는 js와 달리, 파이썬 클래스 내에서 생성자 함수는 ..