전체 글
follow your dream's
-
ViewModel은 대부분 MVVM 패턴에서 사용되는 Model, View, ViewModel 용어에서 들어봤을 것이다. 구글이 개발자들을 위해 Clean Architecture를 쉽게 구현할 수 있도록 라이브러리들을 만들었는데 이를 Android Architecture Components (AAC)라고 부르며 그중 하나가 바로 ViewModel이다. Android Jepack의 구성요소 중 하나로, 본래 ViewModel이란 이름은 소프트웨어 개발 디자인 패턴중 하나인 MVVM(Model — View — ViewModel) 디자인 패턴으로부터 파생되었다. 뷰모델 클래스 ❓ 1. 수명 주기를 고려해 UI 관련 데이터를 저장하고 관리하도록 설계됐다. 2. 뷰모델 클래스를 사용하면 화면 회전 같이 구성을 변..
[android] ViewModel란?ViewModel은 대부분 MVVM 패턴에서 사용되는 Model, View, ViewModel 용어에서 들어봤을 것이다. 구글이 개발자들을 위해 Clean Architecture를 쉽게 구현할 수 있도록 라이브러리들을 만들었는데 이를 Android Architecture Components (AAC)라고 부르며 그중 하나가 바로 ViewModel이다. Android Jepack의 구성요소 중 하나로, 본래 ViewModel이란 이름은 소프트웨어 개발 디자인 패턴중 하나인 MVVM(Model — View — ViewModel) 디자인 패턴으로부터 파생되었다. 뷰모델 클래스 ❓ 1. 수명 주기를 고려해 UI 관련 데이터를 저장하고 관리하도록 설계됐다. 2. 뷰모델 클래스를 사용하면 화면 회전 같이 구성을 변..
2023.07.09 -
이 그림은 안드로이드 공식문서에서 가져온 그림이다. 앱을 설계할 때 UI와 관련된 데이터는 ViewModel + LiveData로 관리하도록 권장하고 있다. 이번 게시글은 LiveData에 대해 이야기해보겠다. LiveData 는 Observer 패턴을 활용하여, Lifecycle 에 따르며 데이터를 관리 이름 그대로 '실시간' 그 자체의 데이터, 즉 항상 최신 데이터를 보증한다는 특징이 있다. Observer? 위에서 말한 observer가 무엇인지 궁금할 수 있다. 나는 livedata를 몰랐을 때는 데이터를 일일이 UI에 업데이트 해주었다..(이건 클린 아키텍처가 아니다.) 그렇다면 매번 데이터를 관찰해주는 관찰자 역할이 있다면 어떨까? 안드로이드에서 Observer가 그런 개념이다. 데이터가 변경..
[android] Livedata란? (feat.ViewModel)이 그림은 안드로이드 공식문서에서 가져온 그림이다. 앱을 설계할 때 UI와 관련된 데이터는 ViewModel + LiveData로 관리하도록 권장하고 있다. 이번 게시글은 LiveData에 대해 이야기해보겠다. LiveData 는 Observer 패턴을 활용하여, Lifecycle 에 따르며 데이터를 관리 이름 그대로 '실시간' 그 자체의 데이터, 즉 항상 최신 데이터를 보증한다는 특징이 있다. Observer? 위에서 말한 observer가 무엇인지 궁금할 수 있다. 나는 livedata를 몰랐을 때는 데이터를 일일이 UI에 업데이트 해주었다..(이건 클린 아키텍처가 아니다.) 그렇다면 매번 데이터를 관찰해주는 관찰자 역할이 있다면 어떨까? 안드로이드에서 Observer가 그런 개념이다. 데이터가 변경..
2023.07.09 -
최근 비동기 프로그래밍인 코루틴에 대해 공부하고있다. 내가 아는 비동기 프로그래밍들에 대해 들어본 것들은 RxJava, Asyncfunction(현재 deprecated됨), Coroutine 정도였다. 몇 일동안 코루틴의 개념에 대해 공부하였고, 사용방법, 코루틴의 다양한 활용 예시들을 보면서 작동되는 과정들을 이해하였다. 아직 다양한 방법으로 활용하는 것은 무리가 있어 최근 진행하였던 프로젝트를 코루틴을 사용하여 '리팩토링' 해보았다. 기존 코드에선 Retrofit을 이용하여 서버와 통신할 때 enqueue를 사용하여 비동기 처리를 해주었다. 하지만 Coroutine을 사용하면 enqueue를 사용하지않고 Retrofit 통신이 가능하였다. Retrofit + enqueue interface GetP..
[TIL] Retrofit + Coroutine 사용하기 (feat. enqueue 비동기)최근 비동기 프로그래밍인 코루틴에 대해 공부하고있다. 내가 아는 비동기 프로그래밍들에 대해 들어본 것들은 RxJava, Asyncfunction(현재 deprecated됨), Coroutine 정도였다. 몇 일동안 코루틴의 개념에 대해 공부하였고, 사용방법, 코루틴의 다양한 활용 예시들을 보면서 작동되는 과정들을 이해하였다. 아직 다양한 방법으로 활용하는 것은 무리가 있어 최근 진행하였던 프로젝트를 코루틴을 사용하여 '리팩토링' 해보았다. 기존 코드에선 Retrofit을 이용하여 서버와 통신할 때 enqueue를 사용하여 비동기 처리를 해주었다. 하지만 Coroutine을 사용하면 enqueue를 사용하지않고 Retrofit 통신이 가능하였다. Retrofit + enqueue interface GetP..
2023.07.05 -
프로젝트를 진행하다보면 비동기 처리를 위해 사용되는 라이브러리들이 많은데 비동기처리의 주 "코루틴" 에 대해서 공부하다보니, thread? coroutine? 비슷한 작동방식이 아닌가라는 생각이 들었다. 그래서 쓰레드와 코루틴이 정확히 무엇인지 비교를 해보려고 한다. 먼저 Thread와 Coroutine은 모두 동시성 프로그래밍을 위한 기술이다. 동시성과 병렬성(Concurrency & Parallelism) 동시성 (Concurrency) 말 그대로 동시에 여러 작업을 수행하는 것 Task1과 Task2를 시분할(Interleaving) 기법을 활용하여 동시에 실행되는 것처럼 번갈아가며 수행한다. 수행시간은 Task1이 걸리는 시간 10분 + Task2가 걸리는 시간 10분 = 총 20분이 소요된다. ..
[Android] Thread와 Coroutine의 차이프로젝트를 진행하다보면 비동기 처리를 위해 사용되는 라이브러리들이 많은데 비동기처리의 주 "코루틴" 에 대해서 공부하다보니, thread? coroutine? 비슷한 작동방식이 아닌가라는 생각이 들었다. 그래서 쓰레드와 코루틴이 정확히 무엇인지 비교를 해보려고 한다. 먼저 Thread와 Coroutine은 모두 동시성 프로그래밍을 위한 기술이다. 동시성과 병렬성(Concurrency & Parallelism) 동시성 (Concurrency) 말 그대로 동시에 여러 작업을 수행하는 것 Task1과 Task2를 시분할(Interleaving) 기법을 활용하여 동시에 실행되는 것처럼 번갈아가며 수행한다. 수행시간은 Task1이 걸리는 시간 10분 + Task2가 걸리는 시간 10분 = 총 20분이 소요된다. ..
2023.07.04 -
아직 dfs 개념이 제대로 안잡혀있는 것 같아 다시 정리해봅니다. 💡 문제 설명 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. 사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성해주세요. 제한사항 주어지는 숫자의 개수는 2개 이상 20개 이하입니다. 각 숫자는 1 이상 50 이하인 자연수입니다. 타겟 넘버는 1 이상 1000 이하인 자연수입니다. 입출력 예 입출력 예 설명 입출력 예 #..
[프로그래머스] 타겟 넘버 with Python아직 dfs 개념이 제대로 안잡혀있는 것 같아 다시 정리해봅니다. 💡 문제 설명 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. 사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성해주세요. 제한사항 주어지는 숫자의 개수는 2개 이상 20개 이하입니다. 각 숫자는 1 이상 50 이하인 자연수입니다. 타겟 넘버는 1 이상 1000 이하인 자연수입니다. 입출력 예 입출력 예 설명 입출력 예 #..
2023.07.01 -
💡문제 설명 계속되는 폭우로 일부 지역이 물에 잠겼습니다. 물에 잠기지 않은 지역을 통해 학교를 가려고 합니다. 집에서 학교까지 가는 길은 m x n 크기의 격자모양으로 나타낼 수 있습니다. 아래 그림은 m = 4, n = 3 인 경우입니다. 가장 왼쪽 위, 즉 집이 있는 곳의 좌표는 (1, 1)로 나타내고 가장 오른쪽 아래, 즉 학교가 있는 곳의 좌표는 (m, n)으로 나타냅니다. 격자의 크기 m, n과 물이 잠긴 지역의 좌표를 담은 2차원 배열 puddles이 매개변수로 주어집니다. 오른쪽과 아래쪽으로만 움직여 집에서 학교까지 갈 수 있는 최단경로의 개수를 1,000,000,007로 나눈 나머지를 return 하도록 solution 함수를 작성해주세요. 제한사항 격자의 크기 m, n은 1 이상 100..
[프로그래머스] 등굣길 with Python💡문제 설명 계속되는 폭우로 일부 지역이 물에 잠겼습니다. 물에 잠기지 않은 지역을 통해 학교를 가려고 합니다. 집에서 학교까지 가는 길은 m x n 크기의 격자모양으로 나타낼 수 있습니다. 아래 그림은 m = 4, n = 3 인 경우입니다. 가장 왼쪽 위, 즉 집이 있는 곳의 좌표는 (1, 1)로 나타내고 가장 오른쪽 아래, 즉 학교가 있는 곳의 좌표는 (m, n)으로 나타냅니다. 격자의 크기 m, n과 물이 잠긴 지역의 좌표를 담은 2차원 배열 puddles이 매개변수로 주어집니다. 오른쪽과 아래쪽으로만 움직여 집에서 학교까지 갈 수 있는 최단경로의 개수를 1,000,000,007로 나눈 나머지를 return 하도록 solution 함수를 작성해주세요. 제한사항 격자의 크기 m, n은 1 이상 100..
2023.06.29 -
💡문제 설명 위와 같은 삼각형의 꼭대기에서 바닥까지 이어지는 경로 중, 거쳐간 숫자의 합이 가장 큰 경우를 찾아보려고 합니다. 아래 칸으로 이동할 때는 대각선 방향으로 한 칸 오른쪽 또는 왼쪽으로만 이동 가능합니다. 예를 들어 3에서는 그 아래칸의 8 또는 1로만 이동이 가능합니다. 삼각형의 정보가 담긴 배열 triangle이 매개변수로 주어질 때, 거쳐간 숫자의 최댓값을 return 하도록 solution 함수를 완성하세요. 제한사항 삼각형의 높이는 1 이상 500 이하입니다. 삼각형을 이루고 있는 숫자는 0 이상 9,999 이하의 정수입니다. 입출력 예 정수 삼각형 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 ..
[프로그래머스] 정수삼각형 with Python💡문제 설명 위와 같은 삼각형의 꼭대기에서 바닥까지 이어지는 경로 중, 거쳐간 숫자의 합이 가장 큰 경우를 찾아보려고 합니다. 아래 칸으로 이동할 때는 대각선 방향으로 한 칸 오른쪽 또는 왼쪽으로만 이동 가능합니다. 예를 들어 3에서는 그 아래칸의 8 또는 1로만 이동이 가능합니다. 삼각형의 정보가 담긴 배열 triangle이 매개변수로 주어질 때, 거쳐간 숫자의 최댓값을 return 하도록 solution 함수를 완성하세요. 제한사항 삼각형의 높이는 1 이상 500 이하입니다. 삼각형을 이루고 있는 숫자는 0 이상 9,999 이하의 정수입니다. 입출력 예 정수 삼각형 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 ..
2023.06.28 -
💡문제 설명 아래와 같이 5와 사칙연산만으로 12를 표현할 수 있습니다. 12 = 5 + 5 + (5 / 5) + (5 / 5) 12 = 55 / 5 + 5 / 5 12 = (55 + 5) / 5 5를 사용한 횟수는 각각 6,5,4 입니다. 그리고 이중 가장 작은 경우는 4입니다. 이처럼 숫자 N과 number가 주어질 때, N과 사칙연산만 사용해서 표현 할 수 있는 방법 중 N 사용횟수의 최솟값을 return 하도록 solution 함수를 작성하세요. 제한사항 N은 1 이상 9 이하입니다. number는 1 이상 32,000 이하입니다. 수식에는 괄호와 사칙연산만 가능하며 나누기 연산에서 나머지는 무시합니다. 최솟값이 8보다 크면 -1을 return 합니다. 입출력 예 입출력 예 설명 예제 #1 문제에..
[프로그래머스] - N으로 표현 with Python💡문제 설명 아래와 같이 5와 사칙연산만으로 12를 표현할 수 있습니다. 12 = 5 + 5 + (5 / 5) + (5 / 5) 12 = 55 / 5 + 5 / 5 12 = (55 + 5) / 5 5를 사용한 횟수는 각각 6,5,4 입니다. 그리고 이중 가장 작은 경우는 4입니다. 이처럼 숫자 N과 number가 주어질 때, N과 사칙연산만 사용해서 표현 할 수 있는 방법 중 N 사용횟수의 최솟값을 return 하도록 solution 함수를 작성하세요. 제한사항 N은 1 이상 9 이하입니다. number는 1 이상 32,000 이하입니다. 수식에는 괄호와 사칙연산만 가능하며 나누기 연산에서 나머지는 무시합니다. 최솟값이 8보다 크면 -1을 return 합니다. 입출력 예 입출력 예 설명 예제 #1 문제에..
2023.06.24