분류 전체보기 43

[BOJ][Java] Q25543 - X 만들기

25543번: X 만들기 (1,0), (0,1), (-1,0), (0,-1)에 위치한 압정들을 제거하면 남은 압정들이 X자 모양을 이룬다. www.acmicpc.net 한참 헤매다가 LIS를 공부한 후 풀어냈다. LIS 공부한 후에도 시간초과 나서 어떻게 해결할지 좀 헤맴............어렵다......................나는 몽총이................. 1. 점을 ArrayList에 저장하고, x좌표를 기준으로 정렬한다. 2. 정렬된 list를 가지고 dp를 사용해서 LIS를 구한다. 전체 점을 각각 원점으로 했을 때, 1~4사분면의 LIS 길이를 구한다. 즉, LIS를 구하는 dp 배열 area는 다음과 같이 생겼다. int[][] area = new int[5][N]; (5인..

Java알고리즘 2022.11.12

[개념] 최장 증가 부분 수열, LIS(Longest Increase Subsequence) 알고리즘

BOJ의 "Q25543 - X만들기"를 풀이하다가 LIS에 대해 알게 되었고 공부한 내용을 기록하고자 한다.!! 이 키워드 몰랐으면 못 풀었을 것 같ㄷ아................ https://angxxu.tistory.com/46 [BOJ][Java] Q25543 - X 만들기 25543번: X 만들기 (1,0), (0,1), (-1,0), (0,-1)에 위치한 압정들을 제거하면 남은 압정들이 X자 모양을 이룬다. www.acmicpc.net 한참 헤매다가 LIS를 공부한 후 풀어냈다. LIS 공부한 후에도 시간초과 나서 어 angxxu.tistory.com LIS(Longest Increase Subsequence)란? 최장 증가 부분수열 알고리즘이다. 말 그대로 가장 긴 증가하는 부분 수열을 구..

Java알고리즘 2022.11.12

[Android][Kotlin]8. JetPack Compose - State 더 알아보기

State State에 대해 더 자세히 알아보자. State는 Compose에서 굉장히 중요한 역할을 한다. State는 언제 활용할까? 화면에 나타나는 내용이 변경될 때 활용한다. setContent{ HomeScreen() } @Composable fun HomeScreen(){ Text("Hello World") } 다음과 같은 화면에서 “Hello World”값이 변한다면, State를 활용해야 한다. setContent{ HomeScreen() } @Composable fun HomeScreen(){ Column(){ Text("Hello World") Button(onClick = {}){ Text("클릭") } } } class MainViewModel: ViewModel(){ private..

App/Android 2022.09.21

[Android][Kotlin]7. JetPack Compose - ViewModel

Text와 Button을 세로로 정렬하여 UI를 구성했다. 버튼을 누르면 Text값이 바뀌는 화면을 만들어 볼 것이다. setContent { Column( modifier = Modifier.fillMaxSize(), verticalArrangement = Arrangement.Center, horizontalAlignment = Alignment.CenterHorizontally, ){ Text( "Hello", fontSize = 30.sp, ) Button(onClick={ }){ Text("변경") } } } 일반적인 방법 버튼을 눌렀을 때 Text의 값을 바꿔주려면 어떻게 해야 할지 생각을 해보면, “Hello”부분을 state로 만들어줘야한다. setContent { val data = re..

App/Android 2022.09.21

[Android][Kotlin] 6. JetPack Compose - Navigation

Navigation에 대해 알아보자! Navigation이란 화면 전환을 말한다. 우선 module수준의 build.gradle에 dependency를 추가해야한다. //Navigation implementation "androidx.navigation:navigation-compose:2.5.2" Navigation을 사용하려면, NavController를 얻어와야한다. NavController는 Navigation을 사용할때 핵심적인 역할을 하는 객체이다. 다음과 같이 화면을 3개 만든다. @Composable fun FirstScreen(){ } @Composable fun SecondScreen(){ } @Composable fun ThirdScreen(){ } 화면 내부를 구성하기에 앞서, Na..

App/Android 2022.09.21

[Kotlin] by 키워드?

by 키워드는 Delegate Pattern을 쉽게 구현하도록 도와주는 키워드이다. Delegate Pattern 어떤 기능을 자신이 수행하지 않고, 다른 객체가 수행하도록 하는 패턴이다. 다시 말해, 기능을 위임시키는 것이다. 상위 클래스의 요소를 사용할 때, 상속(Inheritance) 또는 구성(Composition)을 사용할 수 있다. 상속은 모든 요소를 물려받으므로 변수/메소드 등을 다시 구현할 필요가 없어 편리하지만, 객체의 유연성이 떨어진다는 치명적인 단점이 있다. 또한 상위 클래스가 변경되면 하위 클래스도 고쳐야 한다. Composition은 보다 유연성이 높다. Composition은 새 클래스 내부에 기존 클래스의 객체를 만들어 보다 직접적으로 접근하는 것이다. interface Ani..

App/Android 2022.09.21

[Android][Kotlin] 5. Jetpack Compose - Scaffold, TextField, Button, 구조분해, SnackBar, 코루틴 스코프

TextField를 만들고, Button을 눌렀을 때 그 내용이 SnackBar로 나오도록 만들어보겠다. 우선, 다음과 같이 우리가 원하는 내용의 레이아웃을 만든다. setContent { Column( modifier = Modifier.fillMaxSize(), verticalArrangement = Arrangement.Center, horizontalAlignment = Alignment.CenterHorizontally, ) { //onValueChange = 값이 변했을떄 수행할 로직을 작성하는 함수 TextField( value = "", onValueChange = {}, ) Button(onClick={}){ Text("Click") } } } 하지만 이대로 실행하면 TextField에 ..

App/Android 2022.09.19

[Android][Kotlin] 4. JetPack Compose - Image, Card, State

다음과 같은 레이아웃을 만들어보겠다. 뷰끼리 겹쳐지기 때문에 Box를 사용할 것이고, 귀퉁이를 둥글게 하고 그림자를 지정하기 위해 Card를 사용할 것이다.(CardView) Image는 paintResource를 사용해 그리고, contentDescription을 꼭 지정해주어야 한다. contentScale을 사용해서 Image의 Scale을 지정할 수 있다. @Composable fun ImageCard() { Card( modifier = Modifier .fillMaxWidth(0.5f) //전체의 절반 차지 .padding(16.dp), shape = RoundedCornerShape(8.dp), elevation = 5.dp, ) { Box( modifier = Modifier.height(..

App/Android 2022.09.19

[Android][Kotlin] 3. JetPack Compose - 리스트(ListView, RecyclerView), LazyColumn

Compose에서 리스트를 구현하는 방법은 두 가지가 있다. 첫 번째. Column을 이용한다. Column은 내부 내용을 한 번 출력하고 scroll을 붙여놓은 형태 LazyColumn에 비해 성능이 좋지 않다. setContent { val scrollState = rememberScrollState() Column( modifier = Modifier .background(color = Color.Blue) .fillMaxWidth() .verticalScroll(scrollState) ) { for (i in 1..50) { Text("글씨 $i") } } } rememberScrollState() : 스크롤 상태를 기억해주는 객체 두 번째. LazyColumn 이를 더 많이 사용한다. LazyC..

App/Android 2022.09.19

[Android][Kotlin] 2. JetPack Compose - @Composable, @Preview, Box

@Composable Empty Compose Activity를 생성하면 MainActivity에 다음과 같은 함수가 있다. @Composable fun Greeting(name: String){ Text(text = "Hello $name!") } 일반적인 함수의 형태와 좀 다르다! @Composable 어노테이션이 붙어있으며, 함수 이름이 대문자로 시작한다.(convention) 이렇게 만들어진 함수를 Compose라고 부른다. setContent{} 내부에는 Composable이 붙은 함수만이 들어올 수 있다. @Preview @Preview 어노테이션이 붙어있는 컴포저블은 옆에 Design탭에서 미리보기로 확인할 수 있는 컴포즈이다. 내용을 수정하면 미리보기가 바로 갱신되는 것을 확인할 수 있다...

App/Android 2022.09.19