전체 글

전체 글

    [ Android ] [ Kotlin ] Navigation

    [ Android ] [ Kotlin ] Navigation

    Navigation은 무엇이고 왜 쓰는가? 💬 안드로이드 아키텍처는 하나의 액티비티에 여러 개의 프래그먼트를 사용하도록 권장된다. 💬 기존 Fragment 당 인스턴스를 생성하고 Transaction Manager을 통해 일일이 화면 replace를 하던 비효율적인 방식에서 벗어나서, Navigation을 사용하면 Fragment, Dialog를 포함한 앱의 스토리보드를 볼 수 있으며, 코드 또한 직관적이고 간결해지는 장점을 갖게 된다. 환경 설정 build.gradle (RootProject) buildscript { ext { nav_version = "2.2.0" } dependencies { classpath "androidx.navigation:navigation-safe-args-gradle-..

    [ Android ] [ Kotlin ] Hilt

    [ Android ] [ Kotlin ] Hilt

    의존성 주입이란? 💬 Dependency Injection (DI) 💬 여러 컴포넌트 간 의존성이 강한 안드로이드에서 클래스 간 의존성을 낮춰주기 위한 장치 💬 객체의 생성을 클래스 내부에서 하는 것이 아니라, 클래스 외부에서 객체를 생성하여 주입시켜주는 디자인 패턴 코드 예시 의존 관계를 형성하고 있는 코드 class Car { private val engine = Engine() fun start() { engine.start() } } fun main(args: Array) { val car = Car() car.start() } 생성자를 통한 의존성 주입을 실행한 코드 class Car(private val engine: Engine) { fun start() { engine.start() } }..

    재귀 알고리즘

    재귀 알고리즘

    팩토리얼 구하기 class Factorial { static int factorial(int n) { if (n > 0) return n * factorial(n - 1); else return 1; } } 유클리드 호제법으로 최대 공약수 구하기 class EuclidGCD { static int gcd(int x, int y) { if (y == 0) return x; else return gcd(y, x % y); } } 재귀 알고리즘 분석 💬 주어지는 알고리즘을 이용하여 원리를 파악하고, 재귀 알고리즘을 비재귀 알고리즘으로 풀어보자. class Recur { // 재귀 함수 static void recur(int n) { if (n > 0) recur(n - 1); System.out.println..

    큐

    큐란? ◽ 데이터를 일시적으로 쌓아 두기 위한 자료구조 ◽ 데이터 입력과 출력 순서는 선입선출(FIFO) ◽ 배열로 큐 만들기 ◽ 인큐 시간 복잡도 : O(1) ◽ 디큐 시간 복잡도 : O(n) : 꺼낸 다음 요소부터 모든 요소들을 앞으로 한 칸씩 모두 당겨야 함 ◽ 링 버퍼로 큐 만들기 ◽ 배열의 처음과 끝이 연결되어 있는 자료구조 링 버퍼로 큐 구현하기 본체 만들기 public class IntQueue { private int max; // 큐의 용량 private int front; // 첫 번째 요소 커서 private int rear; // 마지막 요소 커서 private int num; // 현재 데이터 수 private int[] que; // 큐 본체 // 실행 시 예외 : 큐가 비어 있..

    스택

    스택

    스택이란? ◽ 데이터를 일시적으로 저장하기 위해 사용하는 자료구조 ◽ 데이터의 입력과 출력 순서는 후입선출(LIFO) 스택 구현하기 본체 만들기 class IntStack { int max; // 스택 용량 int ptr; // 스택 포인터 int[] stk; // 스택의 본체 // 실행 시 예외 : 스택이 비어 있음 public class EmptyIntStackException extends RuntimeException { public EmptyIntStackException() { } } // 실행 시 예외 : 스택이 가득 참 public class OverflowIntStackException extends RuntimeException { public OverflowIntStackExcepti..

    검색

    선형 검색 알고리즘 1 class MainClass { static int seqSearch(int[] a, int n, int key) { int i = 0; while (true) { if (i == n) return -1; // 검색 실패 (-1을 반환) if (a[i] == key) return i; // 검색 성공 (인덱스를 반환) i++; } } } // a : 검색할 배열 // n : 배열의 크기 // key : 찾을 값 알고리즘 2 class MainClass { static int seqSearch(int[] a, int n, int key) { for (int i = 0; i < n; i++) { if (a[i] == key) return i; return -1; } } 알고리즘 3 c..

    adb 명령어

    안드로이드 adb 명령어 Official https://developer.android.com/studio/command-line/adb?hl=ko#screencap Android 디버그 브리지(adb) | Android 개발자 | Android Developers 기기와 통신할 수 있는 다목적 명령줄 도구인 Android 디버그 브리지를 알아보세요. developer.android.com 시스템 💬 사용자 PC에 연결된 안드로이드 디바이스를 확인 adb devices 💬 안드로이드 디바이스 재시작 adb reboot 💬 특정 디바이스에 명령어 실행 | SERIAL_NUMBER는 adb devices의 가장 왼쪽 부분을 보면 알 수 있다. adb -s [SERIAL_NUMBER] [COMMAND] 파일 ..

    배열

    배열

    자료구조 ◽ 데이터 단위와 데이터 자체 사이의 물리적 또는 논리적 관계 ◽ 자료를 효율적으로 이용할 수 있도록 컴퓨터에 저장하는 방법 배열 int[] a; // 선언 a = new int[5]; // 생성 ◽ 배열을 생성하고 초기화를 하지 않을 경우, 자동으로 0으로 초기화된다. 배열의 복제 int[] a = {1, 2, 3, 4, 5}; int[] b = a.clone(); // 복제 배열의 최댓값 class MainClass { static int maxOf(int[] a) { int max = a[0]; for (int i = 1; i max) max = a[i]; return max; } } 난수의 생성 Random rand = new Random..

    [ Android ] [ Kotlin ] 프래그먼트 onClick

    ✔ 프래그먼트에 있는 뷰들의 클릭 처리 이벤트는 액티비티와 다르다. ✔ 액티비티에서는 layout 파일의 클릭 이벤트를 희망하는 뷰에 onClick 속성을 추가하고 액티비티에서 onClick 메서드를 구현하면 가능했지만, ✔ 프래그먼트에서는 코드로 직접 클릭 리스너를 연결시켜줘야 한다. ✔ fragment_main.xml에 container라는 id를 갖는 layout 안에 버튼 3개가 있다고 가정하자. 코드 class MainFragment : Fragment(), View.OnClickListener { private lateinit var binding: FragmentMainBinding override fun onCreateView( inflater: LayoutInflater, containe..