coding study 35

[Android] Activity와 ViewBinding

2022.04.02 Activity - 사용자 인터페이스 화면을 구성하는 컴포넌트 - 앱의 상태변화가 일어날 때마다 생명 주기의 특정 단계에 해당하는 특정 콜백 메서드를 호출 - xml로 작성된 UI를 그리는 창을 제공 onCreate() - 액티비티 만들 때 뷰 초기화, 리스너 설정 등 한번만 하는 작업을 이 곳에서 많이 해준다. onStart() - 화면이 사용자에게 보여질 때 호출 onResume() - 화면이 사용자와 상호작용하는 시점에 호출 onPause() - 팝업, 다이얼로그로 인해 화면의 일부가 가려졌을 때 호출 onStop() - 화면 전환등으로 액티비티가 더 이상 사용자에게 보여지지 않을 때 호출 onDestory() - 액티비티가 사용자나 시스템에 의해 완전히 종료될 때 호출 View..

[Android] CoordinatorLayout - CollapsingToolbarLayout

처음 화면 모습은 좌측에 나온 것 처럼 상단에 curation 리사이클러뷰가 보이고, 아래에는 카테고리 툴바, 그에 해당하는 리사이클러뷰가 있다. 그리고 사진을 스크롤 하면 어느 순간 카테고리 툴바가 상단에 "착" 붙는 식으로 가고 아래 리사이클러뷰만 리사이클러되는 형식임!! 큐레이션파트 부분을 collapsingToolbarLayout으로 해야할 것 같다! 근데 우려되는 부분은 그 툴바 레이아웃에 리사이클러뷰가 존재해도 되는지? 그 부분인데,, 이론 공부도 필요하다. viewGroup!!!!

[python] 백준 2577번

문제 세 개의 자연수 A, B, C가 주어질 때 A × B × C를 계산한 결과에 0부터 9까지 각각의 숫자가 몇 번씩 쓰였는지를 구하는 프로그램을 작성하시오. 예를 들어 A = 150, B = 266, C = 427 이라면 A × B × C = 150 × 266 × 427 = 17037300 이 되고, 계산한 결과 17037300 에는 0이 3번, 1이 1번, 3이 2번, 7이 2번 쓰였다. 입력 첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 크거나 같고, 1,000보다 작은 자연수이다. 출력 첫째 줄에는 A × B × C의 결과에 0 이 몇 번 쓰였는지 출력한다. 마찬가지로 둘째 줄부터 열 번째 줄까지 A × B × C의 결과에 1부터 9까지의 숫자가 각각..

[python] 백준 1260

문제 그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램을 작성하시오. 단, 방문할 수 있는 정점이 여러 개인 경우에는 정점 번호가 작은 것을 먼저 방문하고, 더 이상 방문할 수 있는 점이 없는 경우 종료한다. 정점 번호는 1번부터 N번까지이다. 입력 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사이에 여러 개의 간선이 있을 수 있다. 입력으로 주어지는 간선은 양방향이다. 출력 첫째 줄에 DFS를 수행한 결과를, 그 다음 줄에는 BFS를 수행한 결과를 출력한다. V부터 방문된 점을 순서대로 출력하면 된다. ..

[python] 구현 - 1004번

문제 어린 왕자는 소혹성 B-664에서 자신이 사랑하는 한 송이 장미를 위해 살아간다. 어느 날 장미가 위험에 빠지게 된 것을 알게 된 어린 왕자는, 장미를 구하기 위해 은하수를 따라 긴 여행을 하기 시작했다. 하지만 어린 왕자의 우주선은 그렇게 좋지 않아서 행성계 간의 이동을 최대한 피해서 여행해야 한다. 아래의 그림은 어린 왕자가 펼쳐본 은하수 지도의 일부이다. 빨간 실선은 어린 왕자가 출발점에서 도착점까지 도달하는데 있어서 필요한 행성계 진입/이탈 횟수를 최소화하는 경로이며, 원은 행성계의 경계를 의미한다. 이러한 경로는 여러 개 존재할 수 있지만 적어도 3번의 행성계 진입/이탈이 필요하다는 것을 알 수 있다. 위와 같은 은하수 지도, 출발점, 도착점이 주어졌을 때 어린 왕자에게 필요한 최소의 행성..

[python] 그리디 - 백준 11047

문제 준규가 가지고 있는 동전은 총 N종류이고, 각각의 동전을 매우 많이 가지고 있다. 동전을 적절히 사용해서 그 가치의 합을 K로 만들려고 한다. 이때 필요한 동전 개수의 최솟값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) 출력 첫째 줄에 K원을 만드는데 필요한 동전 개수의 최솟값을 출력한다. n,k = map(int,input().split()) money_type=[] for i in range(n): money_type.append(int(input(..

[Android] 스레드 VS 코루틴

스레드 스레드는 프로세서가 어떻게 한 번에 여러 작업을 처리하는 것처럼 보이는지에 관한 추상화이다. 여러 스레드의 명령어 집합 간에 전환할 때 스레드가 실행되는 정확한 시간과 스레드가 일시중지되는 시점은 우리가 직접 제어할 수 없다. 그리고 스레드를 직접 사용할 때 항상 예측 가능한 출력을 기대할 수도 없다. 예를 들어 다음 코드는 간단한 루프를 사용하여 1에서 50까지 세지만 이 경우에는 숫자가 증가할 때마다 새 스레드가 만들어지는데 예상되는 출력내용이라면 1부터 50까지 순서대로 출력될 것이라고 생각이 들 것이다. 다만, 아래 코드를 출력해보면 fun main() { var count = 0 for (i in 1..50) { Thread { count += 1 println("Thread: $i co..

[python] 그리디 - 숫자 카드 게임

[문제] 숫자가 쓰인 카드들이 NxM 형태로 놓여 있다. 이때 N은 행의 개수 , M은 열의 개수를 의미한다. 먼저 뽑고자 하는 카드가 포함되어 있는 "행"을 선택한다. 그 다음에 선택된 행에서 포함된 카드들 중 가장 숫자가 낮은 카드를 뽑아야 한다. 따라서 처음에 카드를 골라낼 행을 선택할 때, 이후에 해당 행에서 가장 숫자가 낮은 카드를 뽑을 것을 고려하여 최종적으로 가장 높은 숫자의 카드를 뽑을 수 있도록 전략을 세워야 한다. [입력 조건] 첫째 줄에 숫자 카드들이 놓인 행의 개수 N과 열의 개수 M이 공백을 기준으로 하여 각각 자연수로 주어진다.(1

[python] 그리디 - 큰 수의 법칙

[문제] 큰 수의 법칙은 다양한 수로 이루어진 배열이 있을 때 주어진 수들을 M번 더하여 가장 큰 수를 만드는 법칙이다. 단, 배열의 특정한 인덱스에 해당하는 수가 연속해서 K번을 초과하여 더해질 수 없는 것이 이 법칙의 특징이다. 예를 들어 3,4,3,4,3,으로 이루어진 배열이 있을 때 M이 7이고, K가 2라고 가정하자. 이 경우 두 번째 원소에 해당하는 4와 네 번째 원소에 해당하는 4를 번갈아 두 번씩 더하는 것이 가능하다. 결과적으로 4+4+4+4+4+4+4인 28이 도출된다. 배열의 크기 N, 숫자가 더해지는 횟수 M, 그리고 K가 주어질 때 큰 수의 법칙에 따른 결과를 출력하시오. [입력] 첫째 줄에 N(2