코틀린-안드로이드 70

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..

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번 노드 사이에 간선이 있다는 의미입니..

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..

64일차)알고리즘 문제(섬 연결하기, 조이스틱, N으로 표현), 개인공부(Result에러 핸들링, State 패턴으로 UI상태관리, listAdapter갱신 안되는 이유, LiveData와 StateFlow비교, SharedPreference의 동기적 처리, coroutineScope와 CoroutineScope의 차이)

>알고리즘 문제1. 섬 연결하기 1)문제문제 설명n개의 섬 사이에 다리를 건설하는 비용(costs)이 주어질 때, 최소의 비용으로 모든 섬이 서로 통행 가능하도록 만들 때 필요한 최소 비용을 return 하도록 solution을 완성하세요.다리를 여러 번 건너더라도, 도달할 수만 있으면 통행 가능하다고 봅니다. 예를 들어 A 섬과 B 섬 사이에 다리가 있고, B 섬과 C 섬 사이에 다리가 있으면 A 섬과 C 섬은 서로 통행 가능합니다.제한사항섬의 개수 n은 1 이상 100 이하입니다.costs의 길이는 ((n-1) * n) / 2이하입니다.임의의 i에 대해, costs[i][0] 와 costs[i] [1]에는 다리가 연결되는 두 섬의 번호가 들어있고, costs[i] [2]에는 이 두 섬을 연결하는 다리..

63일차)알고리즘 문제(이중우선순위큐), 심화 주차 강의(Retrofit, 디버깅)

>알고리즘 문제1. 문제문제 설명이중 우선순위 큐는 다음 연산을 할 수 있는 자료구조를 말합니다.명령어수신 탑(높이)I 숫자큐에 주어진 숫자를 삽입합니다.D 1큐에서 최댓값을 삭제합니다.D -1큐에서 최솟값을 삭제합니다.이중 우선순위 큐가 할 연산 operations가 매개변수로 주어질 때, 모든 연산을 처리한 후 큐가 비어있으면 [0,0] 비어있지 않으면 [최댓값, 최솟값]을 return 하도록 solution 함수를 구현해주세요.제한사항operations는 길이가 1 이상 1,000,000 이하인 문자열 배열입니다.operations의 원소는 큐가 수행할 연산을 나타냅니다.원소는 “명령어 데이터” 형식으로 주어집니다.- 최댓값/최솟값을 삭제하는 연산에서 최댓값/최솟값이 둘 이상인 경우, 하나만 삭제합..

62일차)알고리즘 문제(디스크 컨트롤), 특강 정리(Repository, UDF, 싱글톤, 데이터클래스 Immutable modeling, 뷰홀더 생성시 nested, EnumClass entries, when문 사용시 defualt값 만들기), 챌린지반 6주차 강의(클린 아키텍쳐), 심화 주차 강의(SharedPreferences,Room, 사용자 위치정보, 지도앱 만들기)

>알고리즘 문제1. 디스크 컨트롤1)문제 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다.예를들어- 0ms 시점에 3ms가 소요되는 A작업 요청- 1ms 시점에 9ms가 소요되는 B작업 요청- 2ms 시점에 6ms가 소요되는 C작업 요청와 같은 요청이 들어왔습니다. 이를 그림으로 표현하면 아래와 같습니다.한 번에 하나의 요청만을 수행할 수 있기 때문에 각각의 작업을 요청받은 순서대로 처리하면 다음과 같이 처리 됩니다.- A: 3ms 시점에 작업 완료 (요청에서 종료까지 : 3ms)- B: 1ms부터 대기하다가, 3ms 시점에 작업을 시작해서 12ms 시점에 작업 완료(요청에서 ..