안드로이드 앱개발 숙련 1주차 정리 - 1 뷰 바인딩 gradle 설정android{ ... buildFeatures{ viewBinding = true }}android studio 버전이 4.0이상이면 해당 구문을 그래들 파일에 추가한다. Activity 설정class MainActivity : AppCompatActivity(){ private lateinit var binding: ActivityMainBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityMainBinding.inflate..
챌린지반 3주차 세션 과제 과제 1 과제 내용 요구사항에 맞춰 디자인 패턴 2개를 구현한다. Singleton 패턴object Logger{ fun log(message: String){ println("log: $message") }}fun main() { Logger.log("Hello, World")}Object로 Logger 클래스를 선언하여 싱글톤 패턴을 구현한다.해당 클래스는 시스템 전체에서 단 하나의 인스턴스만 존재하게 된다. 클래스.메소드 형식으로 오브젝트의 메소드를 호출할 수 있다. Stragety 패턴interface TextAlignmentStrategy { fun textAlign(text: String) : String}class LeftAl..
코드카타 소수 찾기 문제 numbers의 최대길이는 7이므로 조합 가능한 모든 수를 생성해도 시간초과가 나지 않는다. 입출력 예시 주어진 수를 각 자리수별로 나누고 가능한 모든 조합을 생성한 뒤중복을 제거하기 위해 집합에다 추가한다. 생성한 집합의 요소 중 소수에 해당하는 개수를 반환한다. "17" -> [1, 7] -> [1, 7, 17, 71] -> [7, 17, 71] -> 3"011" -> [0, 1, 1] -> [0, 1, 11, 10, 101, 110] -> [11, 101] -> 2위와 같은 과정을 통해 주어진 수에서 만들 수 있는 소수개수를 반환한다. 조합 생성 함수// str: 현재까지 생성된 숫자 문자열 // remaing: 아직까지 사용되지 않은 문자들private fun getC..
코드카타 가장 큰 수 문제 numbers의 최대 길이는 100,000이기에 주어진 수에서가능한 모든 순열을 만드는 방법은 시간초과를 발생시킨다. 입출력 예시 [0, 0, 0], 0 풀이class Solution { fun solution(numbers: IntArray): String { var res = numbers.map { it.toString() } .sortedWith { a, b -> (b + a).compareTo(a + b) } .joinToString("") return if (res[0] == '0') "0" else res }}정수를 이어붙이기 위해 정수를 모두 문자열로 변환..
코드카타 다리를 지나는 트럭 문제 테스트 케이스를 보면 트럭은 1초에 1칸씩 이동한다는 사실을 알 수 있다. 입출력 예시 모든 트럭의 합이 다리가 버틸 수 있는 무게 이하라면 반환값은 (다리 길이 + 트럭 개수)에 해당한다. 풀이class Solution { fun solution(bridge_length: Int, weight: Int, truck_weights: IntArray): Int { val bridgeQ = LinkedList() // 다리 위에 있는 트럭(무게) val distanceQ = LinkedList() // 각 트럭이 다리를 건너기까지의 남은 거리 var weightSum = 0 // 현재 다리 위에 있는 트럭들의 무게합 ..
코드카타 2개 이하로 다른 비트 문제 비트는 십진수를 이진수로 변환한 값에 해당한다. 주어진 수 x의 비트와 비트가 1~2개 다른 수들 중에서 제일 작은 수를 찾아야 하는데 이때 그 수는 x보다 큰 값을 가진다. 입출력 예시 numbers의 요소는 x에 해당하며 result의 요소는 f(x)에 해당한다. 시간 복잡도를 고려하지 않은 풀이class Solution { // 앞에 0을 붙여 두 2진수의 길이를 같게 만듬 private fun makeSameLen(beat1: String, beat2: String): Pair { var maxLen = maxOf(beat1.length, beat2.length) val padBeat1 = beat1.padStart(ma..
코드카타 숫자 변환하기 문제 입출력 예시 x를 y로 만드는 최소 횟수를 구하는 문제이므로 bfs의 개념을 활용해야 한다. 풀이import java.util.*class Solution { fun solution(x: Int, y: Int, n: Int): Int { // 큐와 방문표시를 선언하고 초기값 설정 val q = LinkedList(listOf(Pair(x, 0))) val v = mutableListOf(x) // 너비 우선 탐색 while (q.isNotEmpty()) { // 각 변수는 현재 탐색 중인 노드, 연산 횟수에 해당함 val (current, res) = q.remove(..
코드카타 롤케이크 자르기 문제 롤케이크를 반으로 잘랐을 때 토핑 종류수가 같은 경우의 수를 구하는 문제이다. 입출력 예시 토핑개수가 아주 많을 때의 경우도 고려해야 한다. 시간초과 풀이class Solution { // 토핑 종류 수 반환 함수 private fun tNum(list: List): Int { return list.groupBy { it }.keys.size } fun solution(topping: IntArray): Int { var res = 0 // 토핑의 길이만큼 반복하여 롤케이크를 자른다 for (i in topping.indices) { // 왼쪽 롤케이크의 초기 길..
- Total
- Today
- Yesterday
- 국비지원
- 프로그래머스 #코틀린 #map
- 9 to 9
- 개발블로그
- 그룹화
- 무스마
- 행렬의 내적
- 플러터
- 기초 문제
- 레이아웃
- kakao api
- 스파트타 코딩클럽
- 위젯
- 귤 고르기
- 파이썬
- shared_preferences
- android 부트캠프
- 코틀린
- 프로그래머스
- 뷰
- 안드로이드 스튜디오
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |