전체 글

전체 글

    [C++] 백준 10844번 쉬운 계단 수

    [C++] 백준 10844번 쉬운 계단 수

    다이나믹 프로그래밍 문제. 생각보다 너무 어려워서 이틀동안 계속 머리에 담아두다가 구글링의 도움을 받고 풀었다. 접근 방법 먼저, N자리 수는 N이 1일때는 1~9 2일때는 다음과 같다. 맨 앞자리가 1일때 : 10, 12 맨 앞자리가 2일때 : 21, 23 ... 맨 앞자리가 9일때 : 98 3일때는 다음과 같다. 맨 앞자리가 1일때 : 101, 121, 123 맨 앞자리가 2일때 : 210, 212, 232, 234 ... 맨 앞자리가 9일때 : 987, 989 따라서 다음과 같은 정리가 가능하다. 마지막 숫자가 0이라면 다음으로 갈 수 있는 수는 1 뿐이다. -> 마지막 숫자 앞의 수가 1인 경우만 마지막 숫자가 0이 가능하다. 마지막 숫자가 9라면 다음으로 갈 수 있는 수는 8 뿐이다. -> 마지..

    [C++] 백준 9461번 파도반 수열

    [C++] 백준 9461번 파도반 수열

    다이나믹 프로그래밍 문제. 친절하게 P(1)부터 P(10)까지의 값이 모두 주어졌다. DP는 Bottom Up 방식으로 풀면 주어지는 값이 많으면 많을수록 유추하기 쉽기 때문에 풀기 쉽다. 문제풀이 주어지는 값들의 규칙을 찾아보면 점화식을 바로 찾을 수 있다. n>=4일때, An = A(n - 2) + A(n - 3) 이다. 코드가 짧다. n이 4부터 시작하므로 1, 2, 3값은 초기화를 미리 시켜준다. 그리고 자료형은 long long으로 해주어야 오버플로우가 나지 않는다. GitHub - kimyunseok/study-record: my study-record my study-record. Contribute to kimyunseok/study-record development by creating ..

    [C++] 백준 11727번 2xn 타일링 2

    [C++] 백준 11727번 2xn 타일링 2

    다이나믹 프로그래밍 문제. 처음에 이 문제를 풀 때 점화식을 잘못잡아서 계속 답이 이상하게 나왔었다. 그래서 어떤 방식으로 푸는지 구글링의 도움을 좀 받았는데, 역시 점화식을 구해서 푸는 방식이였다. 이런 문제 유형도 있음을 알아두어야 될 것 같다. 문제 접근 방법 먼저 An을 구할 때, A(n-1)에서 한 칸만 더 추가되는 방식이다. 이 때 2x1이 추가되는 것과 마찬가지 이다. 따라서 A(n-1)에서 2x1을 추가한 것 A(n-2)에서는 2 x 1 두개 추가한 것 : 그러나 이 방식은 A(n-1)에서 2x1을 추가한 것에 포함되어 있다. 1 x 2 두개 추가한 것 2 x 2 추가한 것 A(n-3)부터는 어차피 이미 다 포함되어 있으므로 생각할 필요가 없다. 따라서 점화식은 An = A(n-1) + 2..

    [Android] Do It! 안드로이드 도전 08. 세 개 이상의 화면 만들어 전환하기 -> 액티비티와 프래그먼트로 구현해보기

    [Android] Do It! 안드로이드 도전 08. 세 개 이상의 화면 만들어 전환하기 -> 액티비티와 프래그먼트로 구현해보기

    Do It! 안드로이드 도전 08. P.259 문제 원래는 액티비티들로 구현하라고 나와있지만 프래그먼트도 사용해서 구현을 해 보겠다. 로그인 액티비티 - 메인 액티비티-(메인메뉴 프래그먼트, 고객 관리, 상품 관리, 매출 관리 프래그먼트)로 만들어 보겠다. 유저의 정보를 나타내는 User 클래스이다. 필수적인 것은 아니고, 그냥 데이터 바인딩에서 쓸 클래스이다. 이제 본격적으로 액티비티 관련한 파일들을 살펴보겠다. 로그인 액티비티 xml version="1.0" encoding="utf-8"?> 로그인 화면의 레이아웃 파일에서는 DataBinding을 이용해서 User 클래스를 태그에 로 넣었다. 그리고 양방향 데이터 바인딩을 사용해서 EditText 값이 바뀔때마다 자동으로 User 클래스의 값도 바뀌..

    [Android][Java] 프래그먼트 뒤로가기 누르면 원상복구 + 프래그먼트 데이터 전달

    이번 포스트는 프래그먼트에서 뒤로가기 버튼을 눌렀을 때, 원래 있었던 프래그먼트로 돌아오는 것을 알아보겠다. 프래그먼트 관리자 | Android 개발자 | Android Developers 참고: Navigation 라이브러리를 사용하여 앱의 탐색을 관리하는 것이 좋습니다. 프레임워크는 프래그먼트, 백 스택, 프래그먼트 관리자 사용에 관한 권장사항을 따릅니다. Navigation에 관한 자세한 developer.android.com 프래그먼트와 통신 | Android 개발자 | Android Developers 프래그먼트를 재사용하려면 자체 레이아웃과 동작을 정의하는 완전히 독립된 구성요소로 각 프래그먼트를 빌드합니다. 이러한 재사용 가능한 프래그먼트를 정의한 후에는 활동 및 애플리케이 developer..

    [Android] Do It! 안드로이드 도전 07. 로그인 화면과 메뉴 화면 전환하기

    [Android] Do It! 안드로이드 도전 07. 로그인 화면과 메뉴 화면 전환하기

    Do It! 안드로이드 도전 07. P.258 문제 로그인 액티비티와 메인 메뉴 액티비티로 나누어서 구현했다. 요즘 화면 구성은 액티비티 보다는 프래그먼트를 많이 사용하는 추세이다. 그래도 도전 문제의 의도가 ActivityForResult()를 사용하는 것이므로 액티비티 두 개를 사용해서 풀었다. AndroidManifest.xml파일을 수정해서 MAIN 액티비티를 로그인 액티비티로 수정해서 앱을 실행했을 때 로그인 액티비티가 나오도록 구현했다. ActivityResultLauncher 객체를 사용해서 onCreate에서 초기화를 진행했다. 콜백 메서드로 결과코드가 9001이라면 토스트 메시지로 메뉴 이름이 나오게 했다. 어려운 부분은 없으므로 넘어가겠다. 메인 액티비티에서 볼 부분은 버튼을 클릭했을 ..

    [Android] SharedPreferences 사용하기

    [Android] SharedPreferences 사용하기

    앱에서 간단한 데이터를 저장 또는 복원할 때 SharedPreferences를 사용할 수 있다. 이 기능은 앱 내부에 파일을 하나 만들어서 파일에서 데이터를 저장하거나 읽어올 수 있도록 한다. 개발자는 파일에 접근할 필요는 없고 SharedPreferences의 저장과 복원 메서드를 사용하면 된다. 원래는 Application()을 상속받은 전역 어플리케이션 클래스를 만들어서 그 안에 companion object로 SharedPreferences 객체를 하나 생성한 후 모든 클래스 파일에서 사용할 수 있도록 한다. sharedPreferences 객체를 이용해서 앱을 종료하고 다시 실행했을 때도 저장돼 있는 데이터를 화면에 띄우도록 해보겠다. 생명주기를 이용해보면, onPause()에서 데이터를 저장해..

    [Android] 액티비티의 생명주기

    [Android] 액티비티의 생명주기

    안드로이드 시스템은 실행중인 앱의 상태를 직접 관리한다. 이는 앱이 독립적이게 될 경우, 메모리를 과도하게 점유하거나 권한을 과도하게 갖는 것을 방지하는 용도이다. 멀티태스킹을 지원하는 안드로이드의 경우 시스템이 계속해서 모니터링할 필요가 있다. 실행한 액티비티 위에 다른 액티비티가 생성되면, 액티비티는 액티비티 스택에 넣어서 보관하게 된다. 즉 이는 한 액티비티가 다른 액티비티의 상태에 영향을 미칠 수 있음을 의미한다. ex.) 게임 앱을 하던 중 전화가 와서 전화 앱이 최상단에 위치하는 경우 따라서 액티비티는 실행, 중지, 메모리에서 해제되는 여러 과정의 상태 정보를 가지고 있다. 실행(Running) : 화면상에 액티비티가 보이는 형태. 액티비티 스택의 최상위에 위치한다. 일시 정지(Paused) ..

    [Android] 태스크 관리

    [Android] 태스크 관리

    앱은 하나의 프로세스 위에서 동작한다. 프로세스가 하나 실행되고 그 위에 가상 머신(Virtual Machine)이 만들어지고, 이 가상 머신 위에서 앱이 실행이 된다. 그러나 인텐트의 액션 데이터의 MIME타입으로 전화 앱을 실행시킬 수 있었다. 이 전화 앱 역시 다른 프로세스 위에서 실행하게 된다. 전화 앱에서 뒤로가기 버튼을 누르면 원래 앱으로 돌아올 수 있어야 하는데, 프로세스 끼리는 정보공유가 어렵다. 그래서 앱에서는 태스크(Task)가 만들어진다. 태스크는 앱이 어떻게 동작할지 결정할 때 사용된다. 태스크를 이용하면 프로세스처럼 독립적인 실행 단위와 상관없이 어떤 화면들이 같이 동작해야 하는지 흐름을 관리하는 것이 가능하다. ex.) A 액티비티에서 B 액티비티(전화 앱)을 실행하면 태스크가 ..

    [C++] 백준 10773번 제로

    [C++] 백준 10773번 제로

    0을 부르면 최근에 적은 값을 지우고 아니라면 값을 넣는 문제. 최근에 있는 값을 빼야한다. -> 스택 문제 스택 자료구조를 쓰면 쉽게 풀 수 있다. 쉽게 맞출 수 있는 문제라 생각한다. GitHub - kimyunseok/study-record: my study-record my study-record. Contribute to kimyunseok/study-record development by creating an account on GitHub. github.com 코드는 위에서 확인이 가능하다.