본문 바로가기

전체 글233

[Kotlin] Enum class, Sealed class Enum class상수값의 타입 안전성을 보장하며, when 문에서 상수에 정의된 값에 대한 처리를 반드시 하도록 강제한다.상수 값에 대한 특정한 동작이 필요할 때 특정 상수값에 대한 동작을 빼먹는 것을 방지할 수 있다.각 상수는 단 하나의 인스턴스만 가질 수 있다. (싱글톤)상수의 속성값은 정의 후 변경할 수 없다.다른 클래스를 상속할 수 없고, 다른 클래스에게 상속받을 수도 없다. 그러나 interface 를 구현할 수 있다.상수와 연관된 변수를 상수에 저장할 수 있다.서브 클래스를 생성할 수 없다.private 생성자만 갖는다. BEFORE문제점 : state 의 종류가 늘어날 경우, 처리 로직을 빼먹거나 처리되지 말아야 할 상수값(Int)이 포함될 수 있습니다. 또한, Int 값이 상수값이므로 s.. 2024. 12. 10.
[BaekJoon][Kotlin] 10989번 - 수 정렬하기 3 https://www.acmicpc.net/problem/10989문제N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.입력첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다.출력첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.예제 입력 1 복사105231423517예제 출력 1 복사1122334557코드import java.io.*fun main() { val br = BufferedReader(InputStreamReader(System.`in`)) val bw = BufferedWriter(OutputStreamWriter(.. 2024. 12. 10.
[BaekJoon][Kotlin] 10431번 - 줄세우기 https://www.acmicpc.net/problem/10431문제초등학교 선생님 강산이는 아이들을 데리고 단체로 어떤 일을 할 때 불편함이 없도록 새로 반에 배정받은 아이들에게 키 순서대로 번호를 부여한다. 번호를 부여할 땐 키가 가장 작은 아이가 1번, 그 다음이 2번, ... , 가장 큰 아이가 20번이 된다. 강산이네 반 아이들은 항상 20명이며, 다행히도 같은 키를 가진 학생은 한 명도 없어서 시간이 조금 지나면 아이들은 자기들의 번호를 인지하고 한 줄로 세우면 제대로 된 위치에 잘 서게 된다.하지만 매년 첫 며칠간 강산이와 강산이네 반 아이들은 자기가 키 순으로 몇 번째인지 잘 알지 못해 아주 혼란스럽다. 자기 위치를 찾지 못하는 아이들을 위해 강산이는 특별한 방법을 생각해냈다.우선 아무나.. 2024. 12. 9.
[BaekJoon][Kotlin] 1236번 - 성 지키기 https://www.acmicpc.net/problem/1236문제영식이는 직사각형 모양의 성을 가지고 있다. 성의 1층은 몇 명의 경비원에 의해서 보호되고 있다. 영식이는 모든 행과 모든 열에 한 명 이상의 경비원이 있으면 좋겠다고 생각했다.성의 크기와 경비원이 어디있는지 주어졌을 때, 몇 명의 경비원을 최소로 추가해야 영식이를 만족시키는지 구하는 프로그램을 작성하시오.입력첫째 줄에 성의 세로 크기 N과 가로 크기 M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 성의 상태가 주어진다. 성의 상태는 .은 빈칸, X는 경비원이 있는 칸이다.출력첫째 줄에 추가해야 하는 경비원의 최솟값을 출력한다.예제 입력 1 복사4 4................예제 출력 1 복사4.. 2024. 12. 9.
[Kotlin] 객체 선언(Object Declaration) , 동반 객체(Companion Object) 코틀린 클래스 안에는 정적인 멤버가 없다. 자바 static 키워드를 지원하지 않는다.그 대신 코틀린에서는 패키지 수준의 최상위 함수와 객체 선언을 활용한다.대부분의 경우 최상위 함수를 활용하는 편을 더 권장한다. 그러나 최상위 함수는 특정 클래스의 private 멤버에 접근할 수 없기 때문에, 클래스 내부에 정의된 static 멤버가 다른 클래스 멤버와 상호작용해야 하는 경우에는 적합하지 않다.static 을 최상위 함수로 대체할 수 없는 경우에는 object 를 고려한다. 객체 선언(Object Declaration) : 싱글톤클래스 선언과 그 클래스에 속한 단일 인스턴스의 생성을 동시에 처리해주기 때문에, 싱글톤에 사용하기 적합하다.클래스 전체가 하나의 싱글톤 객체로 선언되고, 처음 사용될 때까지 .. 2024. 12. 9.
[Kotlin] 범위 지정 함수(Scope function) Scope function객체의 이름을 사용하지 않고, 객체에 접근이 가능하게 하는 함수특정 객체에 대한 작업을 블록 안에 넣어 실행할 수 있도록 하는 함수 (feat. kotlinworld)FunctionObject referenceReturn valueIs extension functionletitLambda resultYesrunthisLambda resultYesrun-Lambda resultNo: called without the context objectwiththisLambda resultNo: takes the context object as an argumentapplythisObject referenceYesalsoitObject referenceYes it람다식 내부에서 사용되는 암시.. 2024. 12. 9.
[Kotlin] 타입 연산자(is, as), 널 처리 연산자 타입여러 종류의 데이터를 식별하는 분류로, 어떤 값이 가능한지와 그 타입에 대해 수행할 수 있는 연산의 종류를 결정한다. 타입 체크is와 !is 연산자를 사용하여 런타임에 객체가 주어진 타입인지 확인할 수 있다.스마트 캐스트(Smart Cast) : 컴파일러가 불변 값에 대해 is 검사를 추적하여 필요할 때 자동으로 (안전하게) 캐스팅을 수행하는 기능 타입 캐스팅as 연산자를 사용하여 데이터 타입을 다른 데이터 타입으로 변환할 수 있다.캐스팅은 주로 상속 관계에 있는 클래스들 간에 사용된다.상위 클래스의 객체를 하위 클래스 타입으로 변환하거나, 하위 클래스의 객체를 상위 클래스 타입으로 변환하는 데 활용된다. 업캐스팅하위 클래스의 인스턴스를 상위 클래스 타입으로 변환하는 것항상 안전하며, 명시적으로 캐스.. 2024. 12. 8.