2024/08 12

70일차)특강(flow, Uistate), 팀프로젝트(YoutubeProject)

>특강1. Flow사용이유-livedata의 경우 안드로이드 플랫폼에 종속적이고 UI가 없는곳에서 사용하기 어려움-domainLayer에서 livedata사용이 어려움=>이로 인해 Flow를 상ㅇ 2. Flow란-코틀린에서 쓸 수 있는 비동기 스트림(데이터를 일정한 순서에 따라 연속적으로 처리,전달하는 방식)-사용방법flow builder함수로 코드블록 구성후 emit을 호출해 데이터를 보냄=>flow는 콜드 스트림이라 요청측에서 collect호출해서 값ㅇㄹ 발생시킴생명주기를 모르므로 생명주기에 따른 처리 필요cold stream이므로 연속해서 들어오는 데이터 처리 불가.예시override suspend fun searchUserVideoList(query: String): Flow> { retur..

데이터 레이어 작성, 로그인 및 회원가입과 스플래시 작성

>데이터 레이어 구조@데이터 종류1. 캐시 데이터1)카테고리 데이터 - 채널, 비디오-CategoryModel을 nextPageToken과 CategoryResponse로 나누어 저장.=>새 데이터가 들어오면 토큰은 replace하고 response는 추가하는 방식2) 로그인 데이터-로그인시 로그인 유지를 체크하면 로그인 데이터(아이디, 비밀번호)를 로컬에 저장함-직접 로그아웃시 로그인 데이터를 삭제함-스플래시 화면이 떠있는동안 로그인 데이터를 가져와서 자동로그인 구현2. 리모트 데이터1)파이어베이스유저데이터-회원가입시 중복아이디 체크-유저 데이터 변경시(이름이나 설명), 혹은 새로 회원가입시 수정 및 추가-회원탈퇴시 유저 데이터 삭제-로그인시 유저 데이터 제공유저 좋아요 데이터-좋아요시 추가-좋아요 취..

69일차)챌린지반 강의(Json, 비동기 프로그래밍), Compose강의(LaunchedEffect, rememberCoroutineScope, rememberUpdatedState, DisposableEffect, rememberLauncherForActivityResult)

>챌린지반 강의1. Json(JavaScript Object Notation) 1)Client - REST API server간 통신 -예전엔 HTML코드로 통신 =>문제점: 웹브라우저는 이해되는데 안드로이드같은 곳에선 알아볼 수 없음 -지금은 Json으로 통신 =>웹브라우저뿐만이 아니라 다른 OS들도 데이터를 인식하기 쉬워짐 2)구조 : Key - Value 형태 -{ } 는 Object -[ ] 는 Array 3)convert에 사용할 dataclass -"reponse" : { } => val Reponse: Body //오브젝트는 해당 부분을 데이터 클래스로 @최상위에 { }로 시작하면 해당 오브젝트에 대응되는 data class를 만들어야 한다. -"List" : [ ] => val List: ..

68일차)알고리즘 문제(퍼즐 조각 채우기), 특강(Room, 인터페이스로 데이터 동기화, adapter MVVM구조에서 유의점, 인터페이스를 이용한 데이터 동기화)

>알고리즘 문제1. 문제테이블 위에 놓인 퍼즐 조각을 게임 보드의 빈 공간에 적절히 올려놓으려 합니다. 게임 보드와 테이블은 모두 각 칸이 1x1 크기인 정사각 격자 모양입니다. 이때, 다음 규칙에 따라 테이블 위에 놓인 퍼즐 조각을 게임 보드의 빈칸에 채우면 됩니다.조각은 한 번에 하나씩 채워 넣습니다.조각을 회전시킬 수 있습니다.조각을 뒤집을 수는 없습니다.게임 보드에 새로 채워 넣은 퍼즐 조각과 인접한 칸이 비어있으면 안 됩니다.다음은 퍼즐 조각을 채우는 예시입니다.위 그림에서 왼쪽은 현재 게임 보드의 상태를, 오른쪽은 테이블 위에 놓인 퍼즐 조각들을 나타냅니다. 테이블 위에 놓인 퍼즐 조각들 또한 마찬가지로 [상,하,좌,우]로 인접해 붙어있는 경우는 없으며, 흰 칸은 퍼즐이 놓이지 않은 빈 공간을..

67일차)알고리즘 문제(가장 먼 노드, 순위), 개인과제(이미지 검색앱 만들기)

>알고리즘 문제1. 가장 먼 노드1)문제문제 설명n개의 노드가 있는 그래프가 있습니다. 각 노드는 1부터 n까지 번호가 적혀있습니다. 1번 노드에서 가장 멀리 떨어진 노드의 갯수를 구하려고 합니다. 가장 멀리 떨어진 노드란 최단경로로 이동했을 때 간선의 개수가 가장 많은 노드들을 의미합니다.노드의 개수 n, 간선에 대한 정보가 담긴 2차원 배열 vertex가 매개변수로 주어질 때, 1번 노드로부터 가장 멀리 떨어진 노드가 몇 개인지를 return 하도록 solution 함수를 작성해주세요.제한사항노드의 개수 n은 2 이상 20,000 이하입니다.간선은 양방향이며 총 1개 이상 50,000개 이하의 간선이 있습니다.vertex 배열 각 행 [a, b]는 a번 노드와 b번 노드 사이에 간선이 있다는 의미입니..

이미지 검색앱 만들기

1. 설계:MVVM,Repository,Usecase,UiState Pattern, hilt사용-hilt에 사용하기 위해 ImageSearchApplication을 생성.-MainActivity에 검색결과 프래그먼트(SearchFragment)와 내 보관함 프래그먼트(MyStorageFragment)를 붙이고 각각 검색결과와 보관한 이미지가 보이도록함-RecyclerView를 이용하여 이미지를 화면에 띄움-검색어 저장, 검색어 불어오기, 이미지저장, 이미지불러오기, 이미지 삭제를 Usecase로 만들어 구현-로컬데이터와 리모트데이터에 대한 레포지토리를 각각 생성-로컬데이터 소스는 SharedPreference, 리모트데이터 소스는 Retrofit으로 카카오 검색 API를 활용함 2. 코드 https://..

66일차)알고리즘 문제(여행경로, 입국심사), Compose수업(Recomposition, State, Hoisting), Hilt Scope랑 InstallIn사용시 유의점

>알고리즘 문제1. 여행경로1)문제문제 설명주어진 항공권을 모두 이용하여 여행경로를 짜려고 합니다. 항상 "ICN" 공항에서 출발합니다.항공권 정보가 담긴 2차원 배열 tickets가 매개변수로 주어질 때, 방문하는 공항 경로를 배열에 담아 return 하도록 solution 함수를 작성해주세요.제한사항모든 공항은 알파벳 대문자 3글자로 이루어집니다.주어진 공항 수는 3개 이상 10,000개 이하입니다.tickets의 각 행 [a, b]는 a 공항에서 b 공항으로 가는 항공권이 있다는 의미입니다.주어진 항공권은 모두 사용해야 합니다.만일 가능한 경로가 2개 이상일 경우 알파벳 순서가 앞서는 경로를 return 합니다.모든 도시를 방문할 수 없는 경우는 주어지지 않습니다.2)솔루션class Solution..

65일차)알고리즘 문제(네트워크, 단어 변환), Hilt, 특강정리( 스레드 vs 프로세스, (Android) Main Thread vs Worker Thread- 동기(Synchronous) vs 비동기(Asynchronous), 코루틴 vs 스레드, concurrency vs parallelism, routine vs sub routine vs coroutine,코루틴 빌더,코루틴 스코프,Suspend function,코루틴 디스패쳐,Supervis

>알고리즘 문제1. 네트워크1)문제네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있을 때 컴퓨터 A와 컴퓨터 C도 간접적으로 연결되어 정보를 교환할 수 있습니다. 따라서 컴퓨터 A, B, C는 모두 같은 네트워크 상에 있다고 할 수 있습니다.컴퓨터의 개수 n, 연결에 대한 정보가 담긴 2차원 배열 computers가 매개변수로 주어질 때, 네트워크의 개수를 return 하도록 solution 함수를 작성하시오.제한사항컴퓨터의 개수 n은 1 이상 200 이하인 자연수입니다.각 컴퓨터는 0부터 n-1인 정수로 표현합니다.i번 컴퓨터와 j번 컴퓨터가 연결되어 있으면 co..