1927번: 최소 힙널리 잘 알려진 자료구조 중 최소 힙이 있다. 최소 힙을 이용하여 다음과 같은 연산을 지원하는 프로그램을 작성하시오.https://www.acmicpc.net/problem/1927import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.PriorityQueue; /** *packageName : org.example.알고리즘.최소힙 * fileName : Main * author : ipeac * date : 2024-02-12 * description : * =========================================================== * DATE AUTHOR NO..
코틀린 인터페이스 기본자바 8 의 인터페이스와 유사함인터페이스 내에 추상 메서드 + 구현이 있는 메서드( 자바 디폴트 메서드 ) 도 포함이 가능하다.하지만, 인터페이스에는 상태를 나타내는 필드를 포함할 수 없음.인터페이스 정의 및 구현interface Clickable { fun click() }click 이라는 추상 메서드를 가진 Clickable 인터페이스를 정의함.해당 인터페이스를 구현하는 모든 클래스는 click 메서드에 대한 구현을 제공해야함class Button : Clickable { override fun click() { println("I was clicked") } }Button 클래스는 Clickable 인터페이스를 구현하고 click 메서드를 오버라이드코틀린에서는 override ..
[Silver I] Z - 1074 문제 링크 성능 요약 메모리: 14204 KB, 시간: 124 ms 분류 분할 정복, 재귀 제출 일자 2024년 2월 9일 18:28:49 문제 설명 한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. N > 1인 경우, 배열을 크기가 2N-1 × 2N-1로 4등분 한 후에 재귀적으로 순서대로 방문한다. 다음 예는 22 × 22 크기의 배열을 방문한 순서이다. N이 주어졌을 때, r행 c열을 몇 번째로 방문하는지 출력하는 프로그램을 작성하시오. 다음은 N=3일 때의 예이다. 입력 첫째 줄에 정수 N, r, c가 주어진다. 출력 r행 c열을..
중복 제거의 중요성DRY(Don't Repeat Yourself) 원칙을 따르는 것이 중요코틀린의 로컬 함수함수 내부에 로컬 함수를 중첩시켜 코드를 깔끔하게 조직로컬 함수를 사용해 코드 중복 줄이는 법class User(val id: Int, val name: String, val address: String) fun saveUser(user: User) { fun validate(value: String, fieldName: String) { if (value.isEmpty()) { throw IllegalArgumentException("Can't save user ${user.id}: empty $fieldName") } } validate(user.name, "Name") validate(user..
값의 쌍 , 중위 호출과 구조 분해 선언맵 생성하기맵 생성시 mapOf 함수를 사용함.val map = mapOf(1 to "one", 7 to "seven", 53 to "fifty-three")중위 호출(Infix Call)to 는 코틀린의 키워드가 아니라,중위 호출을 통해 호출되는 일반 메서드임중위 호출은 수신 객체 ( 1 )와 유일한 메서드 인자(”one”) 사이에 메서드 이름을 넣어 호출하는 방식임.1.to("one") // "to" 메서드를 일반적인 방식으로 호출함 1 to "one" // "to" 메서드를 중위 호출 방식으로 호출함중위 호출을 사용하려면 메서드 앞에 infix 변경자를 추가해야 한다.to 함수 는 아래와 같은 식임infix fun Any.to(other: Any) = Pair..
문자열 나누기자바의 String Split 메서드 문제점자바의 String.split 메서드 사용자바에서 “Hello.Split”.split(”.”) 을 사용하여 문자열을 점(.) 을 기준으로 나누려고 시도하는 경우해당 메서드는 정규식을 기반으로 작동함.마침표는 모든 문자를 나타내는 와일드카드로 해석되기에, 빈 배열을 반환해버림코틀린에서 split다양한 파라미터 조합을 받는 split 확장 함수를 제공한다.정규식으로 받고싶으면 Regex 타입을 받고일반 텍스트의 경우 String 타입의 값을 받음정규식을 사용한 문자열 분리fun main() { println("12.345-6.A".split("[.\\-]".toRegex())) // 출력: [12, 345, 6, A] } [12, 345, 6, A]to..