
안드로이드 앱 개발을 공부하면서 디자인 패턴, 아키텍처 패턴이라는 단어를 많이 들어봤을 것이다. 대체 디자인 패턴, 아키텍처 패턴이란 게 무엇이고 이들을 알아야 하는 이유는 무엇인지 알아보자. 1. 디자인 패턴과 아키텍처 패턴의 개념 MVC, MVVM 패턴 등에 대한 검색을 했을 때 디자인 패턴이라고 하는 경우도 있고 아키텍처 패턴이라고 하는 경우도 있어서 둘의 차이가 무엇인지 궁금해서 알아보았다. 디자인 패턴: 소프트웨어 디자인에서 공통적으로 발생하는 문제에 대해 재사용 가능한 해결책을 말한다. 상황에 맞게 사용될 수 있는 문제들을 해결하는데에 쓰이는 템플릿을 의미한다. 프로그래머가 어플리케이션이나 시스템을 디자인할 때 공통된 문제들을 해결하는데에 쓰이는 형식화 된 가장 좋은 패턴이다. 아키텍처 패턴:..

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

문제 문제 출처 programmers.co.kr/learn/courses/30/lessons/42626 문제 설명 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같이 특별한 방법으로 섞어 새로운 음식을 만듭니다. 섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2) Leo는 모든 음식의 스코빌 지수가 K 이상이 될 때까지 반복하여 섞습니다. Leo가 가진 음식의 스코빌 지수를 담은 배열 scoville과 원하는 스코빌 지수 K가 주어질 때, 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 ..

1. DI의 개념 DI란 Dependency Injection의 약자로 의존성 주입을 의미한다. 의존성 주입은 하나의 객체가 다른 객체의 의존성을 제공하는 기술이다. 비유하자면 '의존성'은 서비스로 사용할 수 있는 객체이고 '주입'은 의존성(서비스)을 사용하려는 객체로 전달하는 것을 의미한다. DI는 프로그래밍에 널리 사용되는 기법으로, DI의 원칙을 따르면 훌륭한 앱 아키텍처를 위한 토대를 마련할 수 있다. DI를 클래스들로 예를 들어 설명하자면, Car 클래스와 Engine 클래스가 있는 경우 Car 클래스가 실행되기 위해서는 Engine 클래스의 인스턴스가 있어야 한다. 이러한 필요한 클래스(Engine)를 종속 항목(=의존성)이라고 한다. 클래스들은 흔히 다른 클래스 객체가 필요하다(의존적이다)...

어쩌다 구매하게 되었나 대학교 입학 후 1학년 때 LG 그램을 구매해서 대학생활 내내 사용해왔는데 4년이 넘어가자 슬슬 고비가 보였다. 정확히는 3학년 때부터 안드로이드 스튜디오 실행 중 견디지 못하고 프로그램이 종료되는 일이 빈번했는데 짜증이 나긴 했지만 별 방법이 없었기 때문에 계속 그런 상태로 외주도 하고 졸업 프로젝트도 하고 해야하는 일들은 모두 무사히 잘 마쳤다. 더 큰 문제는 4년이 넘어가면서(올해)부터 시작됐다. 안드로이드 스튜디오에서 레이아웃 XML 파일만 열면 프로그램이 종료되는 것이다. 그래서 안드로이드 스튜디오로는 자바/코틀린 코드를 작업하고 레이아웃 파일들은 vscode로 작업하는 꽤나 웃긴 방식으로 작업을 진행해왔다. 그 와중에 더 이상 안드로이드 앱 개발을 진행할 수 없는 문제가..

문제 집에서 시간을 보내던 오영식은 박성원의 부름을 받고 급히 달려왔다. 박성원이 캠프 때 쓸 N개의 랜선을 만들어야 하는데 너무 바빠서 영식이에게 도움을 청했다. 이미 오영식은 자체적으로 K개의 랜선을 가지고 있다. 그러나 K개의 랜선은 길이가 제각각이다. 박성원은 랜선을 모두 N개의 같은 길이의 랜선으로 만들고 싶었기 때문에 K개의 랜선을 잘라서 만들어야 한다. 예를 들어 300cm 짜리 랜선에서 140cm 짜리 랜선을 두 개 잘라내면 20cm는 버려야 한다. (이미 자른 랜선은 붙일 수 없다.) 편의를 위해 랜선을 자르거나 만들 때 손실되는 길이는 없다고 가정하며, 기존의 K개의 랜선으로 N개의 랜선을 만들 수 없는 경우는 없다고 가정하자. 그리고 자를 때는 항상 센티미터 단위로 정수길이만큼 자른다..

문제 문제 출처 programmers.co.kr/learn/courses/30/lessons/12917 문제 설명 문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요. s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다. 제한 사항 str은 길이 1 이상인 문자열입니다. 입출력 예 s return "Zbcdefg" "gfedcbZ" 풀이 입력된 문자열을 한 단어씩 떨어뜨린 문자열 배열로 만든다. 배열을 정렬한다. 내림차순으로 배치한다. import java.util.Arrays; class Solution { public String solution(String s) { String[] elements =..
깃허브에서 프로젝트를 클론해받아온 후 앱이 실행되지 못하고 다음과 같은 오류가 발생했다. java.lang.NoSuchMethodError: No static method metafactory(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite; in class Ljava/lang/invoke/LambdaMetafactory; or its super classes (declaration of 'ja..
- Total
- Today
- Yesterday
- 아키텍처 패턴
- 백준
- Naver AI Burning Day
- heap
- error
- 코틀린
- MutableLiveData
- livedata
- 프로그래머스
- Kotlin
- gradle
- 우선순위큐
- viewmodel
- Android
- 변수
- BAEKJOON ONLINE JUDGE
- programmers
- androidx.core
- architectural pattern
- hilt
- 자바
- java
- 알고리즘
- 힙
- 라이브 데이터
- SCPC2021
- 안드로이드
- Algorithm
- 뷰모델
- 후기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |