목록분류 전체보기 (85)
성장기록지
부스트캠프 팀원과 함께 학습하며 Stability를 기존보다 더 자세히 학습 할 수 있었다.새로 학습하는 분들에게 도움이 되고자 정리하여 글을 작성한다.노션이 더 편하신 분들은 노션에 정리된 글을 읽으면 좋다 https://www.notion.so/Compose-Stability-2a1909469f964608b8e93e7eaca400e1Jetpack Compose의 3단계Composition(구성) : Composable 함수를 실행하여 UI 트리를 생성하고, 상태를 저장 및 관리한다.@Composable 함수가 실행되어 UI 트리를 생성상태를 관리하기 위해 여러 메모리 슬롯을 할당하며, remember와 같은 메커니즘을 통해 상태를 저장하고, 상태 변경 시 기존 값을 활용하여 해당 부분만 Recompo..

안드로이드의 이미지 라이브러리에 자주 활용되는 LRU Cache에 대해 자세히 알아보고자 한다.일반적인 알고리즘 개념부터 코틀린에서 어떻게 구현되어있는지까지 살펴보자.LRU 알고리즘의 개념가장 오랫동안 사용되지 않은 데이터를 우선적으로 제거하는 방식이다. (Least Recently Used Algorithm) 정해진 capacity 안에서 최근에 사용되어진 데이터를 가장 앞에 보내고, capacity가 꽉 찼을 때 새로운 값이 들어온다면가장 오랜기간 사용되지 않은 데이터를 삭제하고 새로운 값을 넣는 방식이다.아래 그림과 같이 테이블 안에 있는 값이 get이나 put이 되면 최상단으로 불러오게 하고,테이블이 꽉 찼을 때 새로운 값이 들어온다면 가장 오래된 값을 제거하는 모습을 볼 수 있다. (Fig 7..

REST API란?REST는 Representational State Transfer라는 용어의 약자로서 HTTP의 주요 저자 중 한 사람인 로이 필딩이그 당시 웹(HTTP) 설계의 우수성에 비해 제대로 사용되지 못하는 모습에웹의 장점을 최대한 활용할 수 있는 아키텍쳐로 REST를 발표하였고그 아키텍쳐를 이용해 만든 API를 REST API라고 한다. 특징을 정리하자면 다음과 같다.HTTP 프로토콜 장점을 살릴 수 있는 네트워크 기반 아키텍쳐REST API을 구현하기 위해 HTTP method + 모든 개체 Resource화 + URL 디자인(라우팅)이 필요하다.라우팅이란? 클라이언트의 요청에 대한 결과을 어떻게 이어줄 것인가 하는 처리방법에 대한 것을 말한다.URI를 이용한 접근 : 모든 개체를 리소스..

Context?애플리케이션 환경의 전역 정보 인터페이스이다.애플리케이션별 리소스 및 클래스에 접근하거나, 여러 활동에 필요한 작업에 대한 API를 제공한다 Activity Context와 Application Context가 있다. Activity Context액티비티 라이프사이클과 연결되어있다.Application Context앱의 시작부터 종료까지 살아있는 Context이다.항상 사용 할 수는 없다. ex) 다이얼로그는 activity Context로만 접근가능하다 어떤 컨택스트를 사용해야할까? 연관되어있는 가까운 컨택스트를 사용하는것이 안전하다.관련되지 않은 컨택스트 사용 시 앱 크래시로도 이어질 수 있다 . Activity Context를 사용하지 못하는 예시ViewModel에서는 사용하면 안..

MVP 패턴이전에 설명한 MVC 패턴에서 Controller를 Presenter로 교체한 것이다. 흐름은 다음과 같다.1. User가 Input을 준다.2. View는 Presenter에게 Event를 전달한다.3. Presenter는 Model을 조작하고, 데이터 값을 받아온다.4.Presenter는 VIew에게 응답을 알려준다.(Notify)5. View를 통해 ui로 표시하게 된다.Android에서 MVP 패턴 적용하기 (예제)아래와 같이 Contract Interface 안에 View와 Presenter 인터페이스를 만들 수 있다. 사진과 같이 상속을 받아서 내부에서 구체적으로 구현을 하게 된다.아래 버튼은 클릭시 Presenter에게 이벤트를 알려주게 되는 예시 MVP 패턴 적용시 장,단점장점역..

문제풀이N개의 회의를 진행할 때, 최대한 많은 회의를 진행할 수 있도록 선택하는 문제다. 각 회의는 시작 시간과 종료 시간이 주어지며, 한 회의가 끝나야 다음 회의를 시작할 수 있다.예를 들어, 입력값이5 1 4 2 3 3 5 5 7 6 8 이면,가능한 최대 회의 개수는 3개가 된다.접근 방법회의 정렬종료 시간이 빠른 순서대로 정렬한다.종료 시간이 같다면, 시작 시간이 빠른 순서대로 정렬한다.정렬하는 이유는 빨리 끝나는 회의를 선택해야 더 많은 회의를 배치할 수 있기 때문이다.회의 선택첫 번째 회의를 선택한다.이후, 현재 선택된 회의의 종료 시간 이후에 시작하는 회의를 찾아 선택한다.반복하여 최대 개수를 구한다.시간 복잡도 분석정렬 연산: O(NlogN)O(N \log N)O(NlogN)반복문을 통한 ..

문제 문제가 길다.. 풀이교실 초기화N×N 크기의 배열을 만들고, 배열의 바깥쪽을 -1로 채운다.이렇게 하면 인덱스 범위를 벗어나지 않고 편리하게 탐색할 수 있다.학생 배치 규칙학생을 한 명씩 배치하면서 다음의 조건을 만족하는 자리를 찾는다.좋아하는 친구가 인접한 자리주변 네 방향을 확인하여 좋아하는 친구가 가장 많이 있는 자리를 찾는다.비어 있는 칸이 많은 자리1번 조건을 만족하는 자리 중에서, 주변 네 방향에 비어 있는 칸이 가장 많은 자리를 선택한다.행과 열의 위치 기준2번 조건까지 만족하는 자리 중에서, 행 번호가 작은 곳, 행이 같다면 열 번호가 작은 곳을 선택한다.만족도 계산모든 학생이 배치된 후, 만족도를 계산한다.인접한 네 방향에 좋아하는 친구가 몇 명 있는지 확인하여 점수를 부여한다.1명..

MVC의 의미란?MVC 는 Model, View, Controller의 약자이다. 하나의 애플리케이션, 프로젝트를 구성할 때 그 구성요소를 세가지의 역할로 구분한 패턴이다.왜 MVC가 탄생하게 되었을까 ?과거의 프로그래머들은 코드가 많아질수록 복잡해져서 코드 파악도 힘들어지고, 수정 할 때마다 많은 코드를갈아엎어야 했다 -> 유지보수가 힘들었다.그러다가 프로그래머들이 코드를 짜면서 특정 패턴대로 코드를 짜면유지보수가 편한것을 찾아내고, 그 패턴을 하나의 공식처럼 만든것이다. 요약하자면 MVC는 유지보수가 편해지는 코드 구성 방식이다. MVC 패턴 예시 사용자가 구글에 검색어를 입력하면,Controller를 통해 Model에 검색 결과를 달라고 요청한다. 검색 결과를 받은 Controller는 View에게..

문제풀이1. 입력 처리먼저 N, M과 격자 정보를 입력받는다.이후 초기 구름 위치를 설정한다.N, M을 입력받고, N×N 크기의 격자 배열을 생성한다.초기 구름 위치는 항상 (N-1, 0), (N-2, 0), (N-1, 1), (N-2, 1) 이다.2. 구름 이동 및 물 증가이동 방향과 거리를 입력받아, 모든 구름을 새로운 위치로 이동시킨다.이동 처리주어진 방향(d)에 따라 거리(s)만큼 이동한다.이동 시 경계를 넘는 경우 모듈러 연산을 이용해 격자 내에서 순환하도록 한다.물 증가구름이 이동한 위치에서 물의 양을 1 증가시킨다.3. 대각선 물 증가 마법물이 증가한 위치에서 대각선 방향으로 물이 존재하는 칸의 개수를 센 후, 해당 개수만큼 물을 추가한다.대각선 이동 방향: (↖, ↗, ↙, ↘) → dx[..

프로그램이란?컴퓨터가 실행할 수 있는 명령어들의 집합이다. 프로세스란?컴퓨터에서 실행 중인 프로그램이다. 각각의 프로세스는 독립된 메모리 공간을 할당받고, 명령어들과 데이터를 가진다.-> 프로그램이 메모리에 적재되어 cpu에 의해 실행되는 것 (cpu는 명령어를 실행하는 연산 장치이다.) 멀티 프로그래밍이란?cpu 사용을 극대화 시키려고 사용하는 방식. 기존에는 cpu를 하나만 두는 단일 프로세스 시스템을 사용하였지만이는 I/O작업 시 CPU가 놀게 되는 단점이 있었음.이를 보완하고자 여러개의 프로그램을 메모리에 올려놓고 동시에 실행시켜서I/O 작업이 발생하면 다른 프로세스가 CPU에서 실행되게 함. 단점 -> CPU 사용 시간이 길어지면 다른 프로세스는 계속 대기해야 함.멀티태스킹이란? 프로세스는 한번..