Uknow's Lab.
article thumbnail
Kotlin에서의 Setter를 다루는 방법
언어/Kotlin 2024. 1. 30. 02:22

코틀린 클래스의 생성자와 getter, setter public class Member { private String name; private int age; public Member(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } 자바에서 데이터를 담기 위한 클래스를 작성할 때, name, age 라는 두 개의 필드만 존재하..

article thumbnail
코틀린에서는 왜 더 큰 타입으로 자동변환되지 않을까?
언어/Kotlin 2023. 10. 16. 18:46

현재 코틀린을 쓰는 분들은 아마도 자바에서 넘어오신 분들이 많을 것 같습니다. 아무래도 같은 JVM 계열의 형제 언어이고, 상호 운용이 가능하고, 여러 특징들을 공유하니까요. 저도 자바 개발자였기에, 다른 언어에 비해 상대적으로 코틀린은 쉽게 배울 수 있었던 것 같습니다. 하지만 자바 개발을 하다가 오신 분들이라면 다소 당황하게 되는 포인트가 하나 있을텐데, 바로 더 넓은 범위의 타입으로 자동으로 변환되지 않는다는 점 입니다. 자바에서는 별 문제 없이 Int 형 변수를 Long 형에 넣어주면, Int -> Long으로 자동으로 승격시켜주는 것에 익숙했기에 조금 의아합니다. 어째서 자동으로 변환해주지 않는 것일까요? 자바의 Wrapper 클래스를 떠올려보면 쉽게 이해할 수 있습니다. 자바의 int, lon..

article thumbnail
파이썬과 코틀린의 for문이 C, 자바의 for문과 다르게 생긴 이유 (feat. 부수효과(side-effect))
기타 2023. 8. 8. 21:59

for문의 차이 위 for 문은 C, C++, C#, Java 등에서 흔히 접할 수 있는 for문의 형태 입니다. C와 자바를 사용하시는 분들이라면 매우 익숙하실 텐데요. 하지만 파이썬을 주로 사용하는 분들에게는 다소 어색할 수도 있을 것 같습니다. 저는 코딩을 C와 자바로 처음 배웠다 보니, 파이썬의 반복문은 상당히 낮설었습니다. 이는 코틀린의 반복문 역시 마찬가지였습니다. 변수 하나를 두고, 해당 변수의 범위를 지정하는 방식으로 for문이 작동하였습니다. 조건식 + 증감식 기반 vs 대입 기반 파이썬의 반복문을 위와 같이 리스트 내 원소를 순회하는 용도로 사용하는 것을 볼 수 있습니다. 이는 list 내 원소 하나 하나 씩 i에 대입이 된다고 볼 수 있습니다. range(n1, n2) 역시 마찬가지입..

article thumbnail
코틀린의 반올림 방식 : 오사오입
언어/Kotlin 2023. 6. 14. 16:39

kotlin.math.round()... 뭔가 이상한데? https://uknowblog.tistory.com/337 [백준 18110번] [Kotlin] solved.ac https://www.acmicpc.net/problem/18110 18110번: solved.ac 5명의 15%는 0.75명으로, 이를 반올림하면 1명이다. 따라서 solved.ac는 가장 높은 난이도 의견과 가장 낮은 난이도 의견을 하나씩 제외하고, {5, 5, 7}에 대 uknowblog.tistory.com 백준 18110번. solved.ac를 풀면서 한 가지 문제를 만났습니다. 로직 구현 자체는 꽤 간단하고, 딱히 오류도 없는 것 같은데 자꾸 틀렸습니다를 받았기에, 왜지..? 곰곰히 생각하다가, 파이썬에서도 반올림 방식(오..

article thumbnail
[Kotlin/코틀린] 여러 조건을 기준으로 정렬하기
언어/Kotlin 2023. 5. 21. 02:14

개발을 하다보면 간혹가다가 배열 혹은 리스트를 정렬할 때, 여러 프로퍼티를 기준으로 정렬을 해야할 때가 있습니다. 아래와 같이 이름, 나이, 키, 몸무게를 프로퍼티로 가지는 Person 클래스가 있습니다. class Person(val name: String, val age: Int, val height: Int, val weight: Int) Person 클래스의 배열도 있고요. val list = arrayOf( Person("홍길동", 20, 170, 60), Person("전우치", 30, 180, 70), Person("사스케", 40, 160, 50), Person("나루토", 50, 175, 65), ) 그렇다면, 위 사람들을 나이 순서로 정렬하려면 어떻게 해야 할까요? list.sortBy..

article thumbnail
[안드로이드/코틀린] 리사이클러뷰(RecylcerView)에 아이템 클릭 리스너 넣기
프레임워크/Android 2022. 12. 26. 15:22

리스트뷰와 리사이클러뷰의 아이템 클릭 리스너 ListView에 아이템 클릭 이벤트 리스너를 넣는 것은 꽤 간단했습니다. 그냥 버튼 클릭 리스너를 다는것과 같이 setOnItemClickListener를 달아주면 되니까요 하지만 RecyclerView 안에는 어떠한 itemClickListener를 찾아볼 수 없었습니다. 이는 아이템뷰를 재사용(Recylce)하는 리사이클러뷰의 특성 때문입니다. 뷰를 재사용하기 때문에, 리스트뷰보다 적은 리소스를 사용하며, 더 유연하고 자유롭지만, 마찬가지로 뷰를 재사용하기 때문에, 아이템을 클릭했을 때 이벤트를 처리하기가 어렵다고 하네요. 하지만, 방법이 없는것은 아닙니다. 저희가 직접 아이템 클릭 리스너를 구현하여 넣어주면 되니까요. 참고로 본 포스팅에서 사용하는 리사..

article thumbnail
[Kotlin] Jsoup와 크롤링으로 백준 푼 문제 중 포스팅하지 않은 문제 추려내기
언어/Kotlin 2022. 11. 23. 13:03

새롭게 푼 문제는 블로그에 꼬박꼬박 올리려 하고 있으나, 제가 블로그를 좀 늦게 시작했다 보니, 기존에 푼 문제는 포스팅하지 않아, 최근에 기존에 푼 문제도 하나씩 포스팅을 하고 있습니다. 그런데, 맞은 문제들 중에서 포스팅하지 않은 문제를 찾으려니, 백준 문제 제목 복사 - 블로그에서 검색 - 없으면 포스팅, 있으면 처음으로 이동 위 작업을 하나씩 하려다 보니 너무 귀찮은 겁니다...ㅠ 그래서 백준에 있는 문제 리스트와 블로그에 포스팅한 문제 리스트를 갖고와 서로 비교한 후, 백준에서 푼 문제 중 블로그에 포스팅하지 않은 문제만 필터링하고자, IDE를 키고 코드를 적어나갔습니다. 크롤링(Crawing)? 크롤링(Crawing), 혹은 스크래핑(Scraping)은 웹 페이지의 내용을 가져와 원하는 내용을..

article thumbnail
[안드로이드/코틀린] 리사이클러뷰(RecyclerView) 사용법 및 예제
프레임워크/Android 2022. 6. 20. 22:06

리사이클러뷰(RecyclerView) 리사이클러뷰는 안드로이드에서 리스트를 만들기 위해 사용되는 뷰 입니다. 리스트를 만들기 위해 사용된다는 점에서 리스트뷰(ListView)와 비슷하지만, 뷰를 재활용(Recycler)한다는 점에서 리스트뷰보다 더 개선된 형태입니다. 하지만, 뷰를 재활용 하기 때문에 각 뷰의 내용을 담아둘 뷰 홀더(View Holder)가 필요합니다. 아이템 레이아웃 만들기 item_recycler_view.xml 아이템의 각 행을 담을 레이아웃을 만듭니다. 데이터 클래스 만들기 data class BoardItem(val time: String, val title: String, val name: String) 리스트의 각 아이템의 내용이 담길 데이터 클래스를 하나 만듭니다. 저는 예..

[안드로이드] 코틀린 뷰 바인딩 (View Binding)
프레임워크/Android 2022. 4. 17. 21:15

뷰 바인딩(View Binding)은 코틀린 코드 상에서 findViewById를 통해 일일히 뷰를 찾아줄 필요 없이, 코틀린 코드 상에서 레이아웃에 더 쉽게 접근할 수 있도록 해주는 기능입니다. 뷰 바인딩 적용 방법은 아래와 같습니다. build.grandle 에 아래 코드 삽입 buildTypes { buildFeatures { viewBinding true } } build.grandle의 buildTypes 부분에 위 코드를 삽입합니다. 코틀린 코드 상에서 xml 참조하기 액티비티는 보통 Kotlin(Java) 파일과 xml 파일이 쌍을 이룹니다. LoginActivity.kt 과 이에 대응되는 레이아웃 파일인 activity_login.xml이 있고, 여기에 뷰 객체인 btn_login을 생성하..

article thumbnail
[백준 10828번] [Kotlin] 스택
코딩테스트/Kotlin 2022. 2. 25. 00:04

https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 난이도 : 실버 4 알고리즘 분류 : 자료구조, 스택 스택(Stack) 자료구조를 이용하여 풀 수 있는 문제 입니다. 소스코드 import java.io.BufferedReader import java.io.InputStreamReader lateinit var stack: IntArray var ptr = -1 fun main() { val br = BufferedReader(..