Developing Myself Everyday
article thumbnail
[Kotlin] 제네릭, 리플렉션, 애노테이션 - week 12
스터디/코틀린 언어 2023. 10. 18. 11:26

제네릭의 정의 제네릭이란 자료형의 타입을 일반화하는 것을 의미합니다. 이는 내부에서 타입을 지정하는 것이 아니라, 외부에서 사용 시점에 자료형을 지정하게끔 일반화시켜 두는 방법입니다. 제네릭을 사용하면 함수나 클래스 등을 일반화시켜 재사용하기 쉽게 만들 수 있습니다. 제네릭은 object 같은 싱글톤 패턴을 사용하는 상황에서는 사용할 수 없습니다. 오직 하나의 객체만 생성하기에 굳이 일반화할 필요가 없기 때문입니다. 타입 매개변수(Type Parameter) 클래스나 함수의 자료형을 임의의 문자로 지정해서 컴파일 다임에 자료형 점검을 할 때 사용합니다. 타입 매개변수는 영어 대문자로 표시하며 아래와 같이 사용될 수 있습니다. 다만 이에 대한 규칙이 존재하는 것은 아닙니다. 그렇기에 유형에 더 구체적인 이..

article thumbnail
[프로그래머스] 다리를 지나는 트럭 - Kotlin (Queue)

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 사진: Unsplash의Rhys Moult 문제 설명 트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 다리에는 트럭이 최대 bridge_length대 올라갈 수 있으며, 다리는 weight 이하까지의 무게를 견딜 수 있습니다. 단, 다리에 완전히 오르지 않은 트럭의 무게는 무시합니다. 예를 들어, 트럭 2대가 올라갈 수 있고 무게를 10kg까지 견디는 다리가 있습니다. 무게가 [7, 4, 5, 6]kg인 트럭이 ..

article thumbnail
누적합(부분합)을 응용해서 문제 해결하기 by Kotlin

사진: Unsplash의Antoine Dautry 우리가 알고리즘 문제를 해결하다가 보면 특정 구간에 대한 변화를 줘야할 때가 있습니다. 이번 게시글에서는 부분합에 개념에 대해 알아보고 누적합을 사용해서 특정 구간에 대한 변화를 주는 방법을 알아보도록 하겠습니다. 누적합 누적합의 개념은 사실 단순합니다. 배열의 처음부터 각각의 원소를 모두 더한 값을 새로운 배열에 넣으면 됩니다. [1, 2, 3, 4, 5] 의 배열이 있다면 이에 대한 누적합 배열은 [0, 1, 3, 6, 10 ,15] 입니다. 이러한 개념을 이용하면 특정 구간에 대한 합도 쉽게 구할 수 있습니다. 만약 3부터 5를 더한 값을 구하려고 한다고 생각해 보겠습니다. 그럼 이 값은 1부터 5까지의 값에 1부터 2까지 더한 값을 뺀 값이랑 동일..

article thumbnail
클린 아키텍처와 안드로이드 권장 멀티 모듈 적용하기 (3)
Android 2023. 10. 8. 13:25

이 게시글은 아래의 게시글에서 이어지는 내용입니다. 클린 아키텍처와 안드로이드 권장 멀티 모듈 적용하기 (2) 이 게시글은 아래의 게시글에서 이어지는 내용입니다. 클린 아키텍처와 안드로이드 권장 멀티 모듈 적용하기 (1) 도대체 이놈의 클린 아키텍처가 뭐길래 이렇게 저를 괴롭히는지 모르겠습니다. everyday-develop-myself.tistory.com Feature 이제부터는 UI에 관한 Feature 모듈을 구현해볼 예정입니다. 지금까지 만들었던 모듈들은 다 Feature 모듈에서 사용하기 위해서 만들었다고 해도 과언이 아닐것 같습니다. 그러니 지금까지 만들었던 모듈들이 어떻게 사용되는지 중점으로 보시면 좋을것 같습니다. Feature 모듈의 기능은 사실 구현하시는 내용에 따라 많이 달라질 것이..

article thumbnail
21610번: 마법사 상어와 비바라기 - Kotlin
백준/구현 2023. 10. 8. 13:07

21610번: 마법사 상어와 비바라기 마법사 상어는 파이어볼, 토네이도, 파이어스톰, 물복사버그 마법을 할 수 있다. 오늘 새로 배운 마법은 비바라기이다. 비바라기를 시전하면 하늘에 비구름을 만들 수 있다. 오늘은 비바라기 www.acmicpc.net 사진: Unsplash의Gerald Schömbs 문제 마법사 상어는 파이어볼, 토네이도, 파이어스톰, 물복사버그 마법을 할 수 있다. 오늘 새로 배운 마법은 비바라기이다. 비바라기를 시전하면 하늘에 비구름을 만들 수 있다. 오늘은 비바라기를 크기가 N×N인 격자에서 연습하려고 한다. 격자의 각 칸에는 바구니가 하나 있고, 바구니는 칸 전체를 차지한다. 바구니에 저장할 수 있는 물의 양에는 제한이 없다. (r, c)는 격자의 r행 c열에 있는 바구니를 의미..

article thumbnail
[프로그래머스] 호텔 객실 - Kotlin, Java

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 사진: Unsplash의Marten Bjork 문제 설명 호텔을 운영 중인 코니는 최소한의 객실만을 사용하여 예약 손님들을 받으려고 합니다. 한 번 사용한 객실은 퇴실 시간을 기준으로 10분간 청소를 하고 다음 손님들이 사용할 수 있습니다. 예약 시각이 문자열 형태로 담긴 2차원 배열 book_time이 매개변수로 주어질 때, 코니에게 필요한 최소 객실의 수를 return 하는 solution 함수를 완성해주세요. 제한 사항 1 ≤ book_time의 길이 ≤ 1,000 book_time[i]는 ["HH:MM..

article thumbnail
클린 아키텍처와 안드로이드 권장 멀티 모듈 적용하기 (2)
Android 2023. 10. 5. 20:03

이 게시글은 아래의 게시글에서 이어지는 내용입니다. 클린 아키텍처와 안드로이드 권장 멀티 모듈 적용하기 (1) 도대체 이놈의 클린 아키텍처가 뭐길래 이렇게 저를 괴롭히는지 모르겠습니다. 클린 아키텍처를 처음 접하고, 이것이 뭔지 이해하기 까지도 시간이 많이 걸렸습니다. 그럼에도 아직 잘 모르는 everyday-develop-myself.tistory.com Core 이제부터는 Core 폴더에 들어갈 모듈 5개를 만들어볼 예정입니다. 3개의 게시글을 전체 다 따라오시면 아래와 같은 멀티 모듈 프로젝트를 만들 수 있습니다. 다만 이 게시글에서는 안드로이드에 멀티 모듈을 적용하는데 중점이 맞춰져 있습니다. 그렇기에 각각의 모듈의 기능에 대한 설명은 조금 부족할 수 있습니다. 그렇기에 아직 익숙하지지 않은 부분..

article thumbnail
12825번: 1로 만들기 2 - Kotlin, Java
백준/DP 2023. 10. 5. 18:03

12852번: 1로 만들기 2 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 자연수 N이 주어진다. www.acmicpc.net 사진: Unsplash의Antoine Dautry 문제 정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다. X가 3으로 나누어 떨어지면, 3으로 나눈다. X가 2로 나누어 떨어지면, 2로 나눈다. 1을 뺀다. 정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오. 입력 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 자연수 N이 주어진다. 출력 첫째 줄에 연산을 하는 횟수의 최솟값을 출력한다. 둘째 줄에는 N을 1로 만드는 방법에 포함되어 있는 수를 공백으로 구분해서 순서대로..