목록전체 글 (85)
성장기록지

Data Class란?오직 데이터를 실어담을 수 있는 객체를 만들고 싶을 때 사용한다.일반 클래스와 다르게, 다양한 메소드를 자동으로 생성해주는 클래스이다.구성되는 메소드들은 아래와 같다.toString()hashCode()copy()equals()toString()componentsN()또한 아래와 같은 특징들을 가지고 있다. 기본 생성자에 1개 이상의 파라미터가 있어야 함기본 생성자의 파라미터가 val 또는 var 로 선언해야 함다른 클래스를 상속받을 수 없음 ( sealed 클래스는 상속받을 수 있으며, 인터페이스는 구현할 수 있다.)abstract, open, sealed, inner 등 키워드를 붙일 수 없음자동으로 생성한 메소드를 오버라이딩할 경우, 오버라이드 된 메소드 사용아래에선 하나씩 어..

추상 클래스와 인터페이스의 차이를 설명하세요코틀린이랑 그렇게 친하지 않은 사람은 별 차이가 없다고 생각을 할 수 있다.명확한 차이를 확인하도록 기능적 차이와 개념적 차이를 하나씩 파헤쳐 보도록 하겠다독자는 추상 클래스와 인터페이스가 뭔지는 안다는 가정하에 작성해보겠다.기능적 차이1. 인터페이스는 생성자를 만들 수 없다.인터페이스는 추상클래스와 다르게 생성자를 만들 수 없다.왜 이렇게 구성하였는지의 의도는 개념적 차이에서 보충하겠다.2. 인터페이스는 프로퍼티의 상태 저장이 불가능하다.간단한 예시와 함께 보여드리겠다.추상클래스는 다음과 같이 값을 지정해 둘 수 있다.하지만 인터페이스는 다음과 같이 상태 저장이 불가능하다.왜 인터페이스는 상태 저장이 안되게 만들었을까? 이것도 중요한 내용이니이후에 다룰 개념적..

문제https://www.acmicpc.net/problem/2668풀이아래줄의 숫자가 윗줄과 같을 때, 그래프에 넣어준다고 하면 예시 문제는 다음과 같이 표현할 수 있다.1: [2, 3]2: []3: [1]4: [6]5: [4, 5]6: [7]7: [] 이 그래프를 그림으로 그린다면,아래와 같이 표시할 수 있게 된다. 정답인 1,3,5가 사이클로 돌아가는 것을 알 수 있다. 이 문제는 그래프를 dfs탐색하여, 사이클이 생길때마다 것을 정답 리스트에 보관하여 해결할 수 있는 것이다.풀이 코드from collections import defaultdictn=int(input())dict = defaultdict(list)def dfs(x, visited): visited.add(x) check..

xml을 활용한 개인 프로젝트를 통해 Jetpack Room을 사용해보려고 한다!하지만 유명한 기술이라고 꼭 Room을 사용해야 할까? 다른 대안은 없을까? 하는 마음에사용 근거에 대해 조사하고, 그런 김에 기본적인 사용법도 학습하고자 한다!실제 사용 후 얻는 깨달은 점들도 추후 기록하고자 한다!Jetpack Room이란?Android의 SQLite 데이터베이스를 쉽게 사용할 수 있도록 도와주는 Jetpack 라이브러리이다.SQLite란?SQL(Structured Query Language)을 사용해 데이터를 관리하며,애플리케이션 내에서 데이터베이스 파일을 직접 생성하고 사용할 수 있게하는 라이브러리이다.안드로이드에선 앱을 종료해도 데이터가 남아있게 하고 싶을 때 사용한다.데이터베이스 엔진이다.모든 데이..

Android LifeCycle이란?Android의 앱 구성요소가 생성부터 사용,소멸까지의 일련의 과정을 말한다.대표적으로 Activity, Fragment, Service 등이 생명주기를 가지고있다. Activity LifeCycle생명주기를 살펴보기전에 자주 나오는 용어를 정리해보고자 한다.foreground는 가장 위에 있는 상태(사용자에게 보여지는 상태) 이고,background는 반대로 가장 아래에 있는 상태를 의미한다. 이제 각각의 콜백에 대해서 설명해보자.onCreate()액티비티가 생성될 때 호출된다. 단 한번만 호출되기 때문에, 필요한 변수를 초기화하거나,setOnClickListener , 뷰모델 등 초기화 작업에 적합하다. onStart() foreground가 될때마다 호출이 되어..

문제링크 : https://leetcode.com/problems/reorder-data-in-log-files/문제 해석조건에 맞게 로그를 재정렬해라.1.로그의 가장 앞부분은 식별자로서, 순서에 영향을 끼치지 않는다.2.문자로 구성된 로그가 숫자 로그보다 앞에 오며, 문자 로그는 사전순으로 한다.3.문자가 동일할 경우에는 식별자순으로 한다.4.숫자 로그는 입력 순서대로 한다. 문제 해결문자로 구성된 로그는 코틀린의 sortwith을 활용하여 세부 조건에 맞는 정렬을 하였다. sortwith()이란??Comparator를 지정할 수 있습니다. 즉, Comparator를 변경해 자신이 원하는 조건으로 리스트를 정렬하는 것 입니다. 해결 코드class Solution { fun reorderLogF..

문제https://www.acmicpc.net/problem/2636문제 해결치즈가 공기중에 만나면 녹는다는 설명이 제일 중요하다.공기가 정확히 무엇인지 설명해주지 않아서 유추하느라 시간이 많이 걸렸다..여러 가설끝에 찾아낸 정답을 설명해보겠다. 아래 그림을 보면 c가 다음 시간에 녹는 치즈들을 표시해둔 것으로,하얀색 부분이 공기라 맞닿은 면이 녹는건가? 라는 생각을 했다.하지만 그렇게 가정하면 빨간색 화살표로 표시된 곳의 하얀색 부분도 공기인데맞닿은 면들이 녹는 표시가 없으므로,하얀색 면은 빈 공간이라 공기가 있을수도 있지만치즈로 둘러쌓인 하얀색 면은 치즈 안쪽이라 공기가 없구나 라는 생각을 하게 되었다. 그렇다면 항상 치즈 바깥에 있는 빈 공간 에서부터, 하얀색 면들을 bfs로 전부 탐색한 후 ..

간단한 팰린드롬 문제를 무작정 구현하려다 많이 고생하여서팰린드롬을 만드는 알고리즘을 이해하고자 블로그 글을 작성합니다.1. 팰린드롬이란?거꾸로 읽어도 똑같은 문장이나 단어를 말한다.예를틀면 eye,hannah, AABCBAA 같은 단어가 있다.좌우대칭이라고 생각하면 좋다.2. 팰린드롬이 될 수 있는 단어의 조건은?-> 문자의 개수가 홀수인 문자는 하나 이하여야 한다.팰린드롬은 좌우 대칭이어야 하므로 홀수개인 문자는 하나만 중앙에 둘 수 있다.예를 들어 eye는 e는 2개, y가 1개로 홀수인 문자가 y 뿐이라 팰린드롬이지만eyde면 e는 2개, y는 1개, d도 1개로 홀수인 문자가 2개나 있어서문자의 배치를 바꿔도 팰린드롬이 될 수 없다. 3. 입력한 단어를 팰린드롬으로 바꾸자!1.개수가 홀수인 문자는..

문제https://www.acmicpc.net/problem/16926문제 해결배열을 조건에 맞게 한칸씩 반시계 방향으로 돌리는 문제이다.가로와 세로의 길이 중 작은값은 항상 짝수라는 조건이 있어서 가로 세로가 둘다 홀수일때의 예외처리를 해주지 않아도 되어서 좋았다.만약 둘 다 홀수인 아래의 그림(N=5,M=7) 보면, 17~19까지 반시계로 회전을 할 수 없게 된다. 구조 설계많은 변수와 함수가 필요하다고 생각되어 하나씩 설계해 나갔다.초기의 배열을 의미하는 nums ,회전 후 정답 배열을 의미하는 ans 를 구성하였고,가로와 세로의 길이가 각자 다를 수 있으므로,x와 y가 배열을 순회할때 가능한 시작점과 끝점을 의미하는x_min, x_max 와 y_min, y_max 변수를 만들었다.그 후 위의 ..

1. app수준의 build.gradle에 코드 추가 아래의 코드를 buildFeatures에 추가하면 된다.buildConfig = true2. gradle. properties에 코드추가아래의 코드를 추가해주면 된다.android.defaults.buildfeatures.buildconfig=true3. 위에 방법이 안될때build - clean Project를 진행한 후, file - invalidate Caches...를 진행마지막으로 build - Rebuild Project를 진행하면 웬만하면 된다.