전체 글 11

프로그래머스 멀리뛰기 코드 리뷰

이번 문제는 시간복잡도를 맞추는 게 굉장히 중요하다는 것을 알게 된 문제이다. 다양한 방법으로 접근하였다. 문제: 문제 풀이: 접근법#1: 문제를 보고 처음 든 생각은 고등학교 때 배운 순열 및 조합이다. 2와 1 숫자의 조합을 구한 후 순서를 갖지 않은 숫자 순열 문제로 접근하였다. 생각한 식: (조합의 길이)! / ((2의 개수)!*(1의 개수)!) 사용한 코드: 다른 방식으로도 풀어봤다. 문제를 풀다가 나열해 본 결과 피노나치 수열을 이룬다는 것을 확인할 수 있었다. 피보나치 수열을 조금 더 정의에 접근하여 문제를 풀었다. 이와 같은 방식으로 접근하는 방법도 해봤다. 이때 Q = [0]* (n+1)으로 접근하는 법을 기억할 필요가 있다.

카테고리 없음 2023.07.10

프로그래머스 코드 리뷰#2

이번 주에 풀게 된 문제는 최댓값과 최솟값 문제와 푸드 파이트 대회 문제였다. 최댓값과 최솟값 문제 같은 경우 문제를 푸는데 걸린 시간은 약 4분 정도 된 것 같고 푸드 파이트 대회 문제 같은 경우 10분 정도 걸린 것 같다. 최댓값과 최솟값 문제: 문제 풀이: 다른 사람의 풀이: Map 함수란? Map함수의 모형은 다음과 같다. map(function, iterable) 첫번째 매개변수로는 함수가 오고, 두번째 매개변수로는 반복 가능한 자료형(리스트, 튜플 등)이 온다. #map 함수 이용 def add_one(n): return n + 1 result2 = list(map(add_one, myList)) print(f"result2: {result2}) 푸드 파이트 대회 문제 문제 풀이: 다른 사람의..

카테고리 없음 2023.05.22

프로그래머스 문제 코드 리뷰

이번 주 프로그래머스 문제는 짝지어 제거하기 크기가 작은 부분 문자열 이상한 문자 만들기 였다. 밑에 두 문제는 쉽고 빠르게 접근할 수 있었으나 짝지어 제거하기 문제는 풀 때 굉장히 시간이 많이 걸렸다. 스택으로 문제를 접근하는 방식을 생각을 못했었던 것 같다. 앞으로 주어진 문제 말고도 따로 프로그래머스 문제들을 풀어야겠다. 짝지어 제거하기 걸린 시간: 1시간 30분 문제 사항: 동일한 문자가 2개 붙을 시 이를 제거하는 코드를 작성해야 한다. 핵심 접근법: 스택을 만든 후 스택의 마지막 값과 들어오는 값이 같다면 스택의 값을 제거한다. 이런 방식으로 하면 연속으로 두번 값이 나오는 것을 제외하고 리스트에 값을 넣을 수 있다. 작성한 코드: 문제를 풀면서 새로 알게 된 코드 방법: for i, x in..

카테고리 없음 2023.05.15

케라스 창시자에게 배우는 딥러닝 8-2장

사전 훈련된 모델 사용하기 딥러닝이 일반 머신러닝과 가장 큰 차이점이라고 하면 바로 사전 훈련된 모델을 사용할 수 있다는 점이다. 사전 훈련된 모델은 일반적으로 대규모 이미지 분류 문제를 위해 대량의 데이터셋에서 미리 훈련된 모델이다. 이렇게 학습된 모델은 원래 작업과 완전히 다른 클래스에 대한 것이라도 학습에 도움이 된다. 예를 들어, 동물(예를 들어, 코끼리나 기린 등)이나 생활용품으로 이루어진 대규모 이미지를 학습한 훈련된 모델이 있다고 하자, 이를 훈련된 모델은 학습하지 않았던 가구 아이템에 모델을 적용하여도 효율적으로 작동할 수 있다는 것이다. 사전 훈련된 모델을 사용하는 두 가지 방법이 있다. 특성 추출과 미세 조정이다. 특성추출은 사전에 학습된 모델의 표현을 사용하여 새로운 샘플에서 흥미로운..

카테고리 없음 2023.02.17

케라스 창시자에게 배우는 딥러닝 8-1장

합성곱 연산 합성곱을 이해하기 위해서는 완전 연결층과 합성곱 사이의 근본적인 차이를 이해하는 것이 중요하다. 완전 연결층(즉, Dense층은 입력 특성 공간에 있는 전역 패턴(MNIST 숫자 이미지 같은 경우 모든 픽셀에 걸친 패턴)을 학습하지만 합성곱 층은 지역 패턴을 학습한다. 컨브넷의 두 가지 성질: 1. 학습된 패턴은 평행 이동 불변성을 가진다. 컨브넷은 적은 수의 훈련 샘플을 사용해서 일반화 가진 표현을 학습할 수 있다. 컨브넷이 아닌 완전 연결 네트워크에서는 새로운 위치에 나타난 것은 새로운 패턴으로 학습을 한다. 반면에, 컨브넷 같은 경우, 왼쪽 위 모서리에서 패턴을 학습한 것을 오른쪽 모서리에서도 이 패턴을 인식하여 학습을 할 수 있다. 2. 컨브넷은 패턴의 공간적 계층 구조를 학습을 할 ..

카테고리 없음 2023.02.16

코딩 더 매트릭스 1장 함수

함수 함수는 쌍 (a,b)들의 집합(무한 집합도 가능)이며, 이때 각 쌍의 첫 번째 원소는 모두 다르다. 이때 출력은 입력의 상(함숫값)이고, 입력은 출력의 원상(pre-image)이다. 함수 f에 대해, f에 의한 q의 상(함숫값)을 f(q)로 나타낸다. 만약 r = f(q)이면, q는 f에 의해 r로 매핑된다고 한다. D에서 F로의 함수에서,(D를 F로 매핑하는 함수) D를 정의역, F를 공역이라고 한다. D의 함숫값들은 치역에 해당한다. 항등함수 정의역 D에 대해서 D -> D를 D에 대한 항등함수라고 한다. idD(d) = d 함수의 합성 함수의 합성은 두 개의 함수를 결합하여 하나의 새로운 함수를 얻는 것이다. f: A->B 와 g: B->C 에 대해, g o f는 g와 f의 합성함수라 하며, ..

카테고리 없음 2023.02.14

케라스 창시자에게 배우는 딥러닝 7장

케라스에서 모델을 만드는 3가지 API Sequential 모델: 기본적으로 하나의 파이썬 리스트, 단순히 층을 쌓을 수만 있음 함수형 API: 가장 널리 사용되는 모델 구축 API Model 서브클래싱: 모든 상세한 내용을 완전히 제어하고 싶을 경우에 적합. 케라스 내장 기능을 사용하지 못하므로 디버깅하는데 어려움이 있을 가능성이 큼 Sequential 모델: 기본적으로 하나의 파이썬 리스트이다. 기본 sequential 모델 from tensorflow import keras from tensorflow.keras import layers model = keras.Sequential([ layers.Dense(64,activation = "relu"), layers.Dense(10, activatio..

카테고리 없음 2023.02.03

keras창시자에게 배우는 딥러닝 4~6장 정리

머신러닝의 워크 플로우 머신러닝 워크 플로우는 기본적으로 작업 정의 모델 개발 모델 배포 단계로 이루어진다. 이 과정 중 가장 중요한 것은 작업 정의 단계에 해당한다. 정확하게 문제 영역과 고객의 요청에 맞는 모델 및 해결책을 제시하는 것이 가장 중요하다. 필요에 따라서 머신러닝 모델을 사용하지 않고도 풀 수 있는 문제가 있을 수도 있다. 따라서 머신러닝 워크 플로우에서는 해당 과정이 제일 중요하다 할 수 있다. 작업 정의 내용은 다른 포스트에서 다루기로 하고 일단 가장 보편적으로 많이 다루는 모델 개발 단계부터 다루겠다. 모델 개발 모델 개발은 두 가지 특성을 만족 시켜야 한다. 1. 일반화 성능을 보이며 과대적합할 수 있는 모델이어야 한다 2. 최대한 일반화 성능에 도달할 때까지 모델에 규제를 추가하..

카테고리 없음 2023.01.19