백준1463번: 1로 만들기
·
백준
초기 접근 방법일단 나는 처음에 최소 횟수를 구하는 문제이기 때문에 단순하게 재귀를 사용해 DFS+백트래킹 문제처럼 접근했다. 하지만, 이렇게 하면 최소값 비교가 안될 뿐더러 먼저 도착한 경로가 최소라고 보장 못하는 문제가 생간다. 즉, 이 문제는 DP(Dynamic Programming, 동적 계획법)을 사용하여 풀어야 한다. 동적 계획법이란 하나의 큰 문제를 여러 개의 작은 문제로 나누어서 그 결과를 저장하고, 다시 큰 문제를 풀 때 해결하는 알고리즘이다. 이걸 이 문제에 적용하면, 현재 값의 최소 횟수는 이전 최소값들로부터 온다라는 개념을 이용해 풀어야 한다. 점화식 구하기(1) DP를 표로 떠올리기n dp[n]------------1 02 1 (2 → 1)3 ..
[BDA 11기] 데이터 분석 모델링(ML1) - 10주차 모델링 실습
·
BDA-11th
(모델링 실습 코드만 정리한 글임..!)🌀 데이터 준비(1) 데이터 불러오기path = 'https://---.csv'data = pd.read_csv(path)data = data.sample(5000, random_state = 2022)csv 파일을 pandas DataFrame 형태로 불러옴전체 데이터 중 5000개 샘플만 랜덤 추출(2) 데이터 정리drop_cols = ['id']data.drop(drop_cols, axis = 1, inplace = True )단순 식별자인 'id'를 제거 (3) 데이터 분할 1: x,y 나누기target = 'CHURN'x = data.drop(target, axis = 1)y = data.loc[:, target]타켓 변수와 설명 변수 분리(NA는 없어서..
[BDA 11기] 데이터 분석 모델링(ML1) - 10주차
·
BDA-11th
🌀 SVM1. SVM (Support Vector Machine)두 클래스가 존재한다고 가정 e.g. 0(파란색 클래스)와 1(주황색 클래스)SVM의 핵심 아이디어: 두 클래스 사이에 가장 넓은 도로를 내는 것즉, 두 클래스 사이의 가장 넓은 도로를 찾고 그 가운데 중앙선을 모델이라고 함. 분류와 회귀에서 모두 사용 가능중요한 용어 정리결정 경계(Decision Boundary)클래스를 구분하는 경계선, 도로의 중앙선SVM에서 결정 경계가 바로 모델!수학적으로는 초평면(hyper plane)이라고 부름 백터(Vector)모든 데이터 포인트각각의 관측치(샘플)를 의미서포트 벡터(Support Vector)결정 경계와 가장 가까운 데이터 포인트도로의 가장자리에 놓인 점들특징전체 데이터 중 일부만 모델을 결..
[BDA 11기] 데이터 분석 모델링(ML1) - 9주차
·
BDA-11th
🧩 성능2 - 최적화(튜닝)Hyperparameter Tuning이란알고리즘을 이용하여 모델링할 때, 모델 구조나 학습 방식에 영향을 주는 외부 파라미터학습 데이터로부터 자동 학습되지 않고 사전에 사람이 설정하이터 파라미터 튜닝을 통해 성능이 달라질 수 있음튜닝하는 방법에는 정답 X e.g. 지식과 경험 + 다양한 시도 필요대표적인 탐색 e.g. Grid Search, Random Search※ 모델 파라미터 vs 하이퍼 파라미터파라미터: 학습을 통해 자동으로 결정됨 (ex. 가중치)하이퍼 파라미터: 학습 전에 사람이 설정 (ex. k, depth 등)Random Search값의 범위를 지정한 후, 지정한 횟수('n_iter')만큼 무작위로 시도하여 그 중 가장 성능이 좋은 하이퍼 파라미터를 선택하는 ..
[TAVE 스터디 5주차] 메모 앱 만들기
·
TAVE-16th
Section 07🗃️ Firebasefirebase란Google에서 제공하는 백엔드 서비스로, 서버를 직접 구축하지 않아도 로그인, 데이터 저장, 알림, 파일 업로드 등의 기능을 손쉽게 사용할 수 있게 해줌. 기능설명Authentication이메일, 구글, 카카오 등 다양한 로그인/회원가입 기능을 지원Cloud Firestore실시간으로 데이터 저장/불러오기 가능한 NoSQL 데이터베이스Realtime Database데이터가 실시간으로 동기화되는 JSON 기반 DBStorage이미지, 파일 등 대용량 데이터를 저장Cloud Messaging (FCM)푸시 알림 기능 제공Hosting웹 앱을 Firebase 서버에 바로 배포 가능 Firebase의 구조 (서버 vs 클라이언트)클라이언트 (Client)..
[TAVE 스터디 4주차] 음악 목록 앱 만들기
·
TAVE-16th
Section 06🎧 RecyclerViewListView vs. RecyclerView기능ListViewRecyclerViewViewHolder 패턴선택 (성능 위해 권장)필수 (구조적으로 강제)레이아웃 구조수직 스크롤만 가능LayoutManager로 자유롭게 변경 (수직, 수평, 그리드 등)아이템 애니메이션기본 미지원 (구현 복잡)ItemAnimator로 간단하게 기본 애니메이션 적용 및 커스텀 가능유연성 및 확장성낮음높음구현 복잡도상대적으로 간단초기 설정이 조금 더 복잡함기능 구현 순서아이템 레이아웃 만들기: 리스트에 들어갈 아이템 화면(rv_item.xml)을 먼저 만든다.RecyclerView 배치하기: 아이템들을 담을 전체 틀인 RecyclerView를 activity_main.xml에 배치..
[TAVE 스터디 4주차] ListView 만들기 & 더블클릭 종료
·
TAVE-16th
Section 05🎑 폰트 적용하는 법res에 font라는 새로운 디렉토리 만들기원하는 폰트의 .ttf 파일 or .otf 파일 font 폴더 안에 저장적용을 원하는 TestView, Button, CheckBox 등에 android:fontFamily="@font/hanna_font" 와 같이 불러서 적용🎑 코틀린 리스트(Kotlin List)List란? 데이터를 순서대로 저장하는 Collection 중 하나index를 통해 각 요소에 접근할 수 있음 List의 배열 순서는 0부터 시작 e.g. listOf("A", "B", "C") → 인덱스 0은 "A", 인덱스 1은 "B"(로그로 리스트의 배열 상태를 확인한 사진)// 1. List 생성 예시val fruits = listOf("Apple",..
[TAVE 스터디 3주차] 주사위 앱 만들기
·
TAVE-16th
Section 04🎲 DataBinding (데이터바인딩)기존의 방법val btn = findViewById(R.id.testbtn) btn.setOnClickListener { ... } findViewById()로 뷰를 찾아서 코드에서 데이터를 넣어줌.단점:코드가 길어짐 매번 뷰를 찾아야 함UI와 데이터가 따로 놂 → 유지 보수 어려움 Data BindingUI 레이아웃과 데이터(코드)를 직접 연결해주는 라이브러리/기능*장점: *findViewById 필요 없음 → 뷰를 자동으로 바인딩UI와 데이터 연결 직관적 → XML에서 데이터 참조 가능양방향 바인딩 가능 → UI 값이 바뀌면 데이터도 바뀌고, 반대도 가능MVVM 아키텍처와 잘 맞음 MVVM(Model–View–..
[TAVE 스터디 2주차] 사진앱 만들기(2)
·
TAVE-16th
Section03📱SplashSplash 개념앱이나 소프트웨어를 실행할 때 로딩이 완료되기 전 잠시 동안 표시되는 초기 화면애플리케이션의 로고나 간단한 이미지를 통해 로딩 중임을 알림주로 1~5초 정도 짧게 노출구현 방법SplashActivity라는 이름의 New Empty Activity를 새로 만든다.다음과 같이 AndroidManifest.xml에서 확인할 수 있다.Manifest 파일에서 intent-filter 블록을 스플래쉬 액티비티 블록 안으로 넣는다. SplashAcitivity.kt 에 다음과 같은 코드를 추가한다.Handler().postDelayed({ startActivity(Intent(this, MainActivity::class.java..
[TAVE 스터디 1주차] 사진앱 만들기(1)
·
TAVE-16th
Section 1안드로이드 스튜디오 개발환경 세팅IDE란?정의: 통합 개발 환경(IDE, Integrated Development Environment), 소프트웨어 개발에 필요한 여러 기능을 하나의 프로그램 안에서 제공하는 환경코드 작성, 컴파일, 빌드, 디버깅, 실행환경, 자동완성 등의 기능 제공 e.g. IntelliJ IDEA, Eclipse, Visual Studio, Android Studio (안드로이드 앱 개발용)프로젝트 생성하는 법사실 나는 안드로이드 스튜디오가 이미 깔려져 있는 상태라 바로 프로젝트를 실행할 수 있었다.이 화면에서 Empty Activity를 선택 후 프로젝트를 생성하면 된다. (주의사항: 노트북에 IntelliJ나 Java가 깔려있지 않으면 오류가 날 수 있다고 한다...