2024/07 37

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

57일차)알고리즘 문제(거리두기 확인하기, 숫자 카드 나누기, 멀쩡한 사각형),특강 코드 정리(Repository Pattern)-Enum Class, KProperty, Event Bus, compose 1주차

>알고리즘 문제1. 거리두기 확인하기1)문제문제 설명개발자를 희망하는 죠르디가 카카오에 면접을 보러 왔습니다.코로나 바이러스 감염 예방을 위해 응시자들은 거리를 둬서 대기를 해야하는데 개발 직군 면접인 만큼아래와 같은 규칙으로 대기실에 거리를 두고 앉도록 안내하고 있습니다.대기실은 5개이며, 각 대기실은 5x5 크기입니다.거리두기를 위하여 응시자들 끼리는 맨해튼 거리1가 2 이하로 앉지 말아 주세요.단 응시자가 앉아있는 자리 사이가 파티션으로 막혀 있을 경우에는 허용합니다.예를 들어,위 그림처럼 자리 사이에 파티션이 존재한다면 맨해튼 거리가 2여도 거리두기를 지킨 것입니다.위 그림처럼 파티션을 사이에 두고 앉은 경우도 거리두기를 지킨 것입니다.위 그림처럼 자리 사이가 맨해튼 거리 2이고 사이에 빈 테이블..

56일차)알고리즘 문제(마법의 엘리베이터), 해시셋 원소추가 시간복잡도, 특강(livedata, sharedflow, stateflow, Coroutine EventBus, Repository Pattern), 스크럼(ListAdapter에서 notifyDataSetChanged)

>알고리즘 문제1. 문제마법의 세계에 사는 민수는 아주 높은 탑에 살고 있습니다. 탑이 너무 높아서 걸어 다니기 힘든 민수는 마법의 엘리베이터를 만들었습니다. 마법의 엘리베이터의 버튼은 특별합니다. 마법의 엘리베이터에는 -1, +1, -10, +10, -100, +100 등과 같이 절댓값이 10c (c ≥ 0 인 정수) 형태인 정수들이 적힌 버튼이 있습니다. 마법의 엘리베이터의 버튼을 누르면 현재 층 수에 버튼에 적혀 있는 값을 더한 층으로 이동하게 됩니다. 단, 엘리베이터가 위치해 있는 층과 버튼의 값을 더한 결과가 0보다 작으면 엘리베이터는 움직이지 않습니다. 민수의 세계에서는 0층이 가장 아래층이며 엘리베이터는 현재 민수가 있는 층에 있습니다.마법의 엘리베이터를 움직이기 위해서 버튼 한 번당 마법의..