전체 글(137)
-
DP(Dynamic Programming, 백준 알고리즘 14501번)
♣ DP의 의미 기본적인 아이디어로 하나의 큰 문제를 여러 개의 작은 문제로 나누어서 그 결과를 저장하여 다시 큰 문제를 해결할 때 사용하는 것. 일반적인 재귀 방식과 DP는 매우 유사함. 하지만 일반적인 재귀를 사용할 때 동일한 작은 문제들이 여러 번 반복되어 비효율적인 계산이 될 수 있음. ♣ DP의 사용 조건 1. Overlapping Subproblems(겹치는 부분 문제가 존재) 2. Optimal Substructure(최적 부분 구조) - Overlapping Subproblems 동일한 작은 문제들이 반복하여 나타나는 경우에 DP를 사용할 수 있음. 즉, 부분 문제의 결과를 저장하여 중복으로 계산할 필요가 없어져야 함. - Optimal Substructure 부분 문제의 최적 결과 값을 ..
2023.12.28 -
그리디 알고리즘(백준 알고리즘 11399)
♣ 정의 매 선택에서 가장 최적인 답을 선택해서 적합한 결과를 만들자는 의미의 알고리즘 즉 각 부분에서의 최적의 답을 모두 모았을 때 종합적으로도 최적의 결과가 나오는 문제에 적절한 알고리즘. 그리디 알고리즘의 두 가지 특성을 가지는 문제를 푸는 데 적합한 방법임 : 탐욕선택속성, 최적부분구조 서울 - 대구 - 부산 경로로 갈 때 가장 짧게 갈 수 있는 경로를 찾는 문제를 예로 들 수 있음 서울 - 대구의 최적 거리는 200km이고 대구 - 부산의 최적 거리는 80km로 종합적으로 280km를 가는 것이 가장 짧은 경로 1. 탐욕선택속성 각 단계에서 ‘최선의 선택’을 했을 때 전체 문제에 대한 최적해를 구할 수 있는 경우를 의미함. 위에서는 서울-대구로 가는 경로 중 가장 적합한 200km를 선택하는 최..
2023.12.20 -
Chapter 5. 반려동물의 품종 분류하기
♣ 데이터셋 준비 및 DataLoaders 만들기 딥러닝에서 데이터는 일반적으로 두 가지 방식으로 제공됨. - 개별 파일이 텍스트 문서, 이미지 같은 개별 데이터 요소에 대응함. 그리고 폴더나 파일명에 각 데이터의 추가 정보가 있음 - 테이블 형식의 데이터(csv 같은)로 제공됨. 파일명은 테이블로 표현된 데이터를 실제 텍스트 문서나 이미지 같은 데이터로 연결하는 역할. ls 메서드를 사용해서 데이터셋에 포함된 내용 확인하기 파일명은 품종, 언더바, 숫자로 구성되어 있음. 여기서 품종만 뽑아내어야 한다. 이미지 파일 하나를 뽑아서 정규표현식(regex)를 이용하여 품종 뽑기를 시도해보자. 위의 정규표현식은 마지막 밑줄 문자 다음에 하나 이상의 숫자와 JPEG 확장자가 등장하면 마지막 밑줄 문자 이전의 모..
2023.12.17 -
chapter4. 숫자 분류기 예시(숫자 3과 7의 손글씨 이미지 분류)
♣ 픽셀: 컴퓨터 영상 처리의 기본 토대 MNIST 샘플 데이터셋 다운로드하기 ls 메서드를 사용하여 해당 디렉터리의 내용 확인하기 ls 메서드는 fastai에서 제공하는 L 클래스 객체를 반환함. L 클래스는 목록과, 목록의 개수를 함께 출력하는 유용한 기능을 포함함. MNIST는 학습과 검증(또는 테스트용) 데이터셋을 별도의 폴더로 분리해서 보관하는 일반적인 머신러닝 데이터셋의 구조 학습 데이터셋의 폴더 내용 확인하기 'train' 폴더 안에 3과 7 폴더가 들어있음 3, 7 폴더 안의 내용 확인하기(항상 파일 출력 순서가 같도록 sorted 메서드로 정렬) 폴더 안의 이미지 확인하기 Image 클래스는 파이썬 영상 처리 라이브러이(PIL)이 제공함. PIL은 이미지를 열고, 조작하고, 출력할 때 가..
2023.12.08 -
백준 1541번 잃어버린 괄호
♣ 문제 ♣ 문제 해결 아이디어 여러 가지 숫자와 더하기, 빼기가 섞인 식에서 최솟값을 구하려면 빼기를 최대한 많이 해야 한다. 그러면 처음에 빼기가 나왔을 때 뒤에 더해지는 수들을 최대한 다 묶어서 빼야 한다. 예를 들어 55 - 50 + 40에서 빼기 뒤의 50과 40을 괄호로 묶으면 55 - (50+40)이 되어서 90이라는 큰 수를 뺄 수 있다. 다만 이미 앞에 빼기가 한 번 나와서 뒤의 숫자를 묶기 시작했는데 그 중 빼기가 또 한 번 나오면 그 빼기의 앞에서 괄호를 닫아야 한다. 예를 들어 50 - 5 + 10 + 20 - 30 + 20 이라면 처음에 빼기를 만났을 때 괄호를 열어서 묶기 시작하다가 두 번째 빼기를 만나면 두 번째 빼기 기호 앞에 괄호를 닫아줘야 한다. 그리고 새롭게 괄호를 열어..
2023.12.06 -
이미지 분류 연습하기
♣ 이미지 데이터 수집하기 ♣ DataLoaders 만들기 다운로드한 데이터를 DataLoaders 객체로 만들기 DataLoaders: 전달받은 여러 DataLoader 객체를 목적에 맞게 학습용과 검증용으로 나누어 저장하는 클래스 *DataLoaders: fastai가 제공하는 여러 DataLoader를 저장하는 클래스. 개수 제한 없이 원하는만큼 DataLoader를 저장할 수 있지만 보통 학습용과 검증용으로 두 개를 저장함. 다운로드한 데이터로 DataLoaders를 만들려면 적어도 다음과 같은 네 가지 정보 필요함 1. 작업 데이터 유형 2. 데이터 목록을 가져오는 방법 3. 각 데이터에 레이블을 지정하는 방법 4. 검증용 데이터셋을 만드는 방법 DataLoaders 클래스를 만들기 어려울 경우..
2023.12.04