전체 글 97

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 시점에 작업 완료(요청에서 ..

61일차)알고리즘 문제(코딩 테스트 공부, 베스트앨범), Compose특강(flowWithLifecycle(lifecycle), @Composable, Layout, Component, Modifier, Resources)

>알고리즘 문제1. 코딩 테스트 공부1)문제문제 설명[본 문제는 정확성과 효율성 테스트 각각 점수가 있는 문제입니다.]당신은 코딩 테스트를 준비하기 위해 공부하려고 합니다. 코딩 테스트 문제를 풀기 위해서는 알고리즘에 대한 지식과 코드를 구현하는 능력이 필요합니다.알고리즘에 대한 지식은 알고력, 코드를 구현하는 능력은 코딩력이라고 표현합니다. 알고력과 코딩력은 0 이상의 정수로 표현됩니다.문제를 풀기 위해서는 문제가 요구하는 일정 이상의 알고력과 코딩력이 필요합니다.예를 들어, 당신의 현재 알고력이 15, 코딩력이 10이라고 가정해보겠습니다.A라는 문제가 알고력 10, 코딩력 10을 요구한다면 A 문제를 풀 수 있습니다.B라는 문제가 알고력 10, 코딩력 20을 요구한다면 코딩력이 부족하기 때문에 B 문..

서비스 로케이터를 MVVM으로 변경, 알람 기능 확장

1. Contact - MVVM: 서비스 로케이터 패턴을 사용하던것을 MVVM으로 바꾸었고 데이터소스에 필요한 application은 뷰모델에서 프로바이더가 제공해 주는 방식으로 바꾸었다.1)ContactRepositoryImpleclass ContactRepositoryImpl(private val contactDataSource: ContactDataSource):ContactRepository { private val _contacts = MutableSharedFlow>() private val _callLogs = MutableSharedFlow>() private val _mypageContact = MutableSharedFlow>() private val contact..

59일차)알고리즘 문제(테이블 해시 함수,주사위 고르기), 챌린지반 강의(라이프 사이클, 함수형 프로그래밍), 팀프로젝트(알람, 권한 부여,애니메이션 작동 감지)

>알고리즘 문제 1. 테이블 해시 함수1)문제문제 설명완호가 관리하는 어떤 데이터베이스의 한 테이블은 모두 정수 타입인 컬럼들로 이루어져 있습니다. 테이블은 2차원 행렬로 표현할 수 있으며 열은 컬럼을 나타내고, 행은 튜플을 나타냅니다.첫 번째 컬럼은 기본키로서 모든 튜플에 대해 그 값이 중복되지 않도록 보장됩니다. 완호는 이 테이블에 대한 해시 함수를 다음과 같이 정의하였습니다.해시 함수는 col, row_begin, row_end을 입력으로 받습니다.테이블의 튜플을 col번째 컬럼의 값을 기준으로 오름차순 정렬을 하되, 만약 그 값이 동일하면 기본키인 첫 번째 컬럼의 값을 기준으로 내림차순 정렬합니다.정렬된 데이터에서 S_i를 i 번째 행의 튜플에 대해 각 컬럼의 값을 i 로 나눈 나머지들의 합으로 ..

알람, 권한 부여, 애니매이션, 착발신 기록 가져오기

1. 알람1) 알람 추가 다이얼로그mainFbtnAddalarm.setOnClickListener { val builder = AlertDialog.Builder(this@MainActivity) builder.setTitle("알림 추가") builder.setIcon(R.mipmap.ic_launcher) val bindingDialog = DialogAlarmBinding.inflate(layoutInflater) val items = arrayOf("없음","5분","15분","30분") val adapter = ArrayAdapter(this@MainActivity,android.R.layout.simple_spinner_dropdown_item,items) ..

58일차)알고리즘 문제(시소 짝꿍), 팀프로젝트-연락처 만들기

>알고리즘 문제1.문제 문제 설명어느 공원 놀이터에는 시소가 하나 설치되어 있습니다. 이 시소는 중심으로부터 2(m), 3(m), 4(m) 거리의 지점에 좌석이 하나씩 있습니다.이 시소를 두 명이 마주 보고 탄다고 할 때, 시소가 평형인 상태에서 각각에 의해 시소에 걸리는 토크의 크기가 서로 상쇄되어 완전한 균형을 이룰 수 있다면 그 두 사람을 시소 짝꿍이라고 합니다. 즉, 탑승한 사람의 무게와 시소 축과 좌석 간의 거리의 곱이 양쪽 다 같다면 시소 짝꿍이라고 할 수 있습니다.사람들의 몸무게 목록 weights이 주어질 때, 시소 짝꿍이 몇 쌍 존재하는지 구하여 return 하도록 solution 함수를 완성해주세요.제한 사항2 ≤ weights의 길이 ≤ 100,000100 ≤ weights[i] ≤ ..

연락처 가져오기-레포지토리 패턴&서비스 로케이터 패턴, 권한 부여

1. 설계-contactMethods에 contact정보를 가져오는 메소드들을 작성-ContactDataSource는 싱글톤 패턴으로 구현하며 ContactEntities에 연락처 정보를 가지고 있음-ContactRepositoryImpl에서 데이터 소스를 캡슐화하며 접근 메소드들을 구현-SeviceLocator은 싱글톤으로 구현하며 ContactRepository에 필요한 Context를 제공-motionLayout을 이용하여 슬라이드 버튼 구현 2. 코드1)SNSclass SNS(){ var instagram = ArrayList() var github = ArrayList() var discord = ArrayList()}-SNS정보가 담겨있는 클래스 2)ContactEntityda..