전체 235

[백준] 1541 (잃어버린 괄호)

#1 알고리즘#1-1 하향식 동적 프로그래밍 동적 프로그래밍 (Dynamic Programming), 상향식(Bottom-up) 및 하향식(Top-down) 접근#1 알고리즘 #1-1 정의 동적 프로그래밍을 한 줄 요약하면 중복의 제거다. 정적(static)이라는 개념과 반대되는 개념으로서, 동적(dynamic)이라는 단어가 이름에 붙었다. 확실히 static이 붙을 만한 작업kenel.tistory.com하향식 동적 프로그래밍을 구현해 풀었다. Caching을 위한 객체로 HashMap를 사용했다. 예를 들어, 1 + 2 + 3 - 4 + 5 - 6 + 7라는 수식을 Caching하기 위해 makeListToKey()라는 함수를 만들었다 (#2 참조). 수식 makeListToKey()에 넣으면 "+1..

[Android] Retrofit - MVVM 구조

#1 이전 글 [Android] Retrofit - 기초#1 이전 글 [Android] Retrofit - 배경과 구조#1 Restrofit의 배경#1-1 REST API REST API (REpresentational State Transfer Application Programming Interface)#1 무엇(What)에 대한 API인가?#1-1 개요REST(REpresentational State Transfer) 또는kenel.tistory.com이전 게시글에서는 userId를 하드 코딩했지만, 여기에서는 사용자가 원하는 userId를 요청하고 그에 응답할 수 있게 만들어본다. 하는 김에 MVVM적인 구조로 만든다.#2 MVVM 패턴 [Android] MVVM 구조 한눈에 보기#1 안드로이드 ..

[Android] Retrofit - 기초

#1 이전 글 [Android] Retrofit - 배경과 구조#1 Restrofit의 배경#1-1 REST API REST API (REpresentational State Transfer Application Programming Interface)#1 무엇(What)에 대한 API인가?#1-1 개요REST(REpresentational State Transfer) 또는 RESTful API는 서버의 자원(Resource)을 두고kenel.tistory.com이전 글에서 Retrofit의 배경과 구조를 살펴봤다. 이번엔 실제 Retrofit을 사용한 앱을 만들어본다. #2 통신할 서버 JSONPlaceholder - Free Fake REST API{JSON} Placeholder Free fake ..

[Android] Retrofit - 배경과 구조

#1 Restrofit의 배경#1-1 REST API REST API (REpresentational State Transfer Application Programming Interface)#1 무엇(What)에 대한 API인가?#1-1 개요REST(REpresentational State Transfer) 또는 RESTful API는 서버의 자원(Resource)을 두고, 클라이언트와 서버 간의 통신 방법을 규정하는 API(Application Programming Interface)다. 자kenel.tistory.com먼저, 클라이언트-서버 간 통신에서 사용되는 REST API에 대해 알아야 한다. #1-2 OkHttp Overview - OkHttpOkHttp HTTP is the way moder..

REST API (REpresentational State Transfer Application Programming Interface)

#1 무엇(What)에 대한 API인가?#1-1 개요REST(REpresentational State Transfer) 또는 RESTful API는 서버의 자원(Resource)을 두고, 클라이언트와 서버 간의 통신 방법을 규정하는 API(Application Programming Interface)다. 자원이란 데이터베이스에 저장된 데이터다. 블로그를 예로 들면 게시글, 댓글 등이 자원이다. 이 자원은 서로 구분할 수 있는 고유한 식별자(URI)를 가지고 있다. REST API에서는 URI에 속하는 하위 범주인 URL을 자원의 식별자로서 사용한다. 그리고 이 URL이 바로 우리가 일상 생활에서 사용하는 단어인 인터넷 주소다. #1-2 URL(Uniform Resource Locator)의 구조URL의 ..

[Android] Room - AutoMigrationSpec

#1 이전 글 [Android] Room - AutoMigration 기초#1 개요#1-1 데이터베이스 스키마 (Database Schema) [Android] Room - Entity, DAO, Database#1 이전 글 [Android] Room - 기초, INSERT와 DELETE 연습 #1 Room 소개 Room을 사용하여 로컬 데이터베이스에 데이터 저장 | Android Dkenel.tistory.com위 게시글에서 이어진다. #2 AutoMigrationSpec AutoMigrationSpec  |  Android Developersandroidx.compose.desktop.ui.tooling.previewdeveloper.android.comColumn 또는 Table을 추가할 때는 이전..

[Android] Room - AutoMigration 기초

#1 개요#1-1 데이터베이스 스키마 (Database Schema) [Android] Room - Entity, DAO, Database#1 이전 글 [Android] Room - 기초, INSERT와 DELETE 연습 #1 Room 소개 Room을 사용하여 로컬 데이터베이스에 데이터 저장 | Android Developers Room 라이브러리를 사용하여 더 쉽게 데이터를 유지하는 방법 알아보kenel.tistory.com데이터베이스 스키마는 Table의 갯수나 각 테이블에 있는 Column의 갯수와 타입 등을 의미한다. 애플리케이션을 유지보수하다가, 어떤 Table에 새로운 Column을 추가해야할 필요성이 생겼다고 해보자. 데이터베이스를 Room으로 구현했다면, @Entity에 새로운 @Colum..

[백준] 9461 (파도반 수열)

#1 알고리즘#1-1 상향식 동적 프로그래밍 동적 프로그래밍 (Dynamic Programming), 상향식(Bottom-up) 및 하향식(Top-down) 접근#1 알고리즘 #1-1 정의 동적 프로그래밍을 한 줄 요약하면 중복의 제거다. 정적(static)이라는 개념과 반대되는 개념으로서, 동적(dynamic)이라는 단어가 이름에 붙었다. 확실히 static이 붙을 만한 작업kenel.tistory.com상향식 동적 프로그래밍을 구현해 풀었다.  #1-2 수열의 규칙(점화식) 찾기1, 1, 1, 2, 2, 3, 4, 5, 7, 9, ...문제에 제시된 위 수열은 p[n] + p[n+1] = p[n+3] 라는 간단한 점화식을 지니고 있다. #2 코드 - 코틀린/*수열 p가1, 1, 1, 2, 2, 3, ..

[백준] 5430 (AC)

#1 알고리즘배열을 실제로 뒤집거나, 원소를 삭제하는 연산은 높은 처리 시간을 요구한다. 따라서 배열을 실제로 뒤집는 대신 reversed = !reversed 연산으로 대체한다. 그리고 원소를 삭제하는 대신 reversed == false라면 startIndex++, reversed == true라면 endIndex--를 수행한다. #2 코드 - 코틀린lateinit var p: Arrayvar n: Int = -1lateinit var array: Arrayfun main() { val t = readln().toInt() for (i: Int in 0.. { val inputted = readln() val submit: Array = Array(inputted.length) ..

[백준] 2805 (나무 자르기)

#1 개요#1-1 문제 이해'나무를 자르는 높이(cuttingHeight)'가 무엇인지를 묻는 문제다. 그리고 cuttingHeight의 범위는 0 ~ 1,000,000,000이다. 따라서, cuttingHeight를 1씩 증가시켜서 일일히 확인하는 방법은 시간 관계상 힘들다. 다행인 것은 cuttingHeight가 증가함에 따라, 얻어지는 '목재의 량(woodQuantity)'의 감소한다는 사실이다. cuttingHeight가 감소하면 woodQuantity는 그대로거나 감소한다. cuttingHeight가 index고, woodQuantity는 value인 배열 woods가 있다고 가정하자. 그 배열의 모습은 아래와 같다. #1-2 가상의 배열 'woods'M이 285라고 가정한다. 그리고 M값을 만..