분류 전체보기
lateinit var
Lateinit클래스 내에서 변수만 Nullable로 미리 선언하고 초기화를 나중에 해야 하는 경우 lateinit 키워드를 사용한다.var tmp: String? = nulltmp?.plus("1")위와 같이 null 값으로 변수를 선언할 수 있지만, 이 경우 tmp 변수를 사용하고자 하는 모든 곳에 Safe Call(?.)을 붙여줘야해서 가독성이 저하될 수 있다.이때 lateinit을 사용하여 변수를 선언하면 Safe Call을 사용할 필요가 없어 가독성이 높아진다.lateinit var tmp: Stringtmp.plus("1") lateinit 특징1. var로 선언된 클래스의 프로퍼티에만 사용 가능2. null값은 허용되지 않음3. 기본 자료형(int, Long, Double, Float 등)..
Git 여러 커밋 하나로 합치기
브랜치를 따서 작업을 한 후, master 브랜치로 합치는 과정에서 그냥 머지를 하게되면 내 브랜치에서 작업했던 여러 커밋들도 master 히스토리에 그대로 찍히기 때문에 지저분해질 수 있다. 이때 내 브랜치의 커밋 기록을 하나로 합친 후 master로 머지한다면 커밋 히스토리를 좀 더 간결하게 관리할 수 있다. 1. 하나의 커밋으로 합칠 최근 N개의 커밋 선택하기 최근 3개의 커밋을 하나로 합치고 싶다면 아래와 같이 명령어를 입력하면 된다. git rebase -i HEAD~3 2. 현재 리베이스 중인 커밋에 통합할 커밋 선택하기 1번의 명령어를 입력하면 최근 3개의 커밋 기록이 vim 모드로 뜨는데, 여기서 i를 눌러 insert 모드로 진입한다. 그리고 가장 위에 뜨는 커밋을 제외한 나머지 커밋들의..
Android Studio Git 계정 변경하기
1. 현재 로그인된 계정 확인(생략 가능) git config user.name git config user.email 2. 변경할 계정 정보 입력 git config --global user.name 변경할 계정 git config --global user.email 변경할 이메일
getJSONArray vs OptJSONArray
Kotlin에서 JSON의 배열 데이터를 받아오고자 할 때, getJSONArray또는 optJSONArray를 사용할 수 있다. 두가지 모두 JSONObject 클래스에서 사용되는 메소드이지만, 동작 방식과 예외처리 방식에 약간의 차이가 있다. getJSONArray getJSONArray는 필드가 반드시 존재해야 하며, 필드가 존재하지 않을 경우 JSONException을 발생시킨다. 따라서, 해당 필드가 반드시 존재하는 경우에만 사용해야 한다. val jsonArray = jsonObject.getJSONArray("title") optJSONArray optJSONArray는 필드가 존재하지 않거나, 필드 값이 null인 경우에도 null을 반환한다. getJSONArray처럼 필드가 존재하지 않..
[1092] 배(C++)
문제 바로가기 지민이는 항구에서 일한다. 그리고 화물을 배에 실어야 한다. 모든 화물은 박스에 안에 넣어져 있다. 항구에는 크레인이 N대 있고, 1분에 박스를 하나씩 배에 실을 수 있다. 모든 크레인은 동시에 움직인다. 각 크레인은 무게 제한이 있다. 이 무게 제한보다 무거운 박스는 크레인으로 움직일 수 없다. 모든 박스를 배로 옮기는데 드는 시간의 최솟값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 각 크레인의 무게 제한이 주어진다. 이 값은 1,000,000보다 작거나 같다. 셋째 줄에는 박스의 수 M이 주어진다. M은 10,000보다 작거나 같은 자연수이다. 넷째 줄에는 각 박스의 무게가 주어진다. 이 값도 1,000,000보다..
[3079] 입국심사(C++)
문제 바로가기 상근이와 친구들은 오스트레일리아로 여행을 떠났다. 상근이와 친구들은 총 M명이고, 지금 공항에서 한 줄로 서서 입국심사를 기다리고 있다. 입국심사대는 총 N개가 있다. 각 입국심사관이 심사를 하는데 걸리는 시간은 사람마다 모두 다르다. k번 심사대에 앉아있는 심사관이 한 명을 심사를 하는데 드는 시간은 Tk이다. 가장 처음에 모든 심사대는 비어있고, 심사를 할 준비를 모두 끝냈다. 상근이와 친구들은 비행기 하나를 전세내고 놀러갔기 때문에, 지금 심사를 기다리고 있는 사람은 모두 상근이와 친구들이다. 한 심사대에서는 한 번에 한 사람만 심사를 할 수 있다. 가장 앞에 서 있는 사람은 비어있는 심사대가 보이면 거기로 가서 심사를 받을 수 있다. 하지만 항상 이동을 해야 하는 것은 아니다. 더 ..
[15565] 귀여운 라이언(C++)
문제 바로가기 꿀귀 라이언 인형과, 마찬가지로 꿀귀인 어피치 인형이 N개 일렬로 놓여 있다. 라이언 인형은 1, 어피치 인형은 2로 표현하자. 라이언 인형이 K개 이상 있는 가장 작은 연속된 인형들의 집합의 크기를 구하여라. 입력 첫 줄에 N과 K가 주어진다. (1 ≤ K ≤ N ≤ 106) 둘째 줄에 N개의 인형의 정보가 주어진다. (1 또는 2) 출력 K개 이상의 라이언 인형을 포함하는 가장 작은 연속된 인형들의 집합의 크기를 출력한다. 그런 집합이 없다면 -1을 출력한다. 알고리즘 투포인터 슬라이딩 윈도우 해결 방법 인형의 개수가 최대 1000000이기 때문에 브루트포스로 인덱스가 0~1, 0~2, 0~3, 1~2, 1~3.... 사이일 때의 라이언의 개수를 일일이 찾으려고 한다면 1000000C2..
싱글톤 패턴(Singleton Pattern)이란?
깃헙 블로그에서 편하기 보기 Click! 싱글톤 패턴 싱글톤 패턴(Singleton Pattern)이란, 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴을 말한다. 하나의 인스턴스를 만들어 놓고 해당 인스턴스를 다른 모듈들이 공유하며 사용하기 때문에 인스턴스를 생성할 때 드는 비용이 줄어든다는 장점이 있다. 보통 데이터베이스를 연결할 때 많이 사용된다. 싱글톤 패턴의 구현 싱글톤 패턴을 구현하는 방법은 크게 두 가지가 있다. 1. Eager initialization // Eager initialization public class Singleton { // SingleObject 객체 생성 // 객체가 오직 하나임을 보장하기 위해 정적(static) 필드 사용 private static final ..