본문 바로가기
  • 개발하는 곰돌이

Kotlin162

[Kotlin] 기본 매개변수(Default parameter)와 명명된 인자(Named Arguments) 기본 매개변수(Default Parameter) Kotlin 기본 문법 1 : 개요 및 변수와 함수 Default Parameter는 이전에 함수에 대해 정리할 때 짧게 정리한 적이 있다. Kotlin에서는 함수의 파라미터에 기본값을 지정하여 함수 호출 시 기본값이 지정된 파라미터를 생략하면 해당 기본값을 사용하게 만들 수 있다. 이러한 Default Parameter는 함수의 불필요한 오버로딩을 줄일 수 있다는 장점이 있다. 예를 들어 두 정수의 합을 계산하는 함수가 있다. 이 때, isAbsolute라는 파라미터를 추가하여 true를 전달하면 두 정수의 합의 절대값을 반환하게 만들고 싶을 경우에 Java에서는 다음과 같이 함수를 오버로딩해서 구현해야 했다. // Java public int add(i.. 2022. 12. 27.
Kotlin 기본 문법 11 : 스코프 함수(let, run, also, apply, with) 목차 개요 Kotlin에는 Java에는 존재하지 않는 스코프 함수(Scope Function)라는 특수한 함수가 있다. 스코프 함수는 단어 의미 그대로 번역하면 범위 함수가 되는데, 어떠한 객체에 대하여 이 객체가 다루는 특정 범위를 생성하여 프로퍼티나 메소드를 처리하는 코드를 간결하게 만들거나, 메소드 체이닝에 활용하는 함수를 의미한다. 이번 포스트에서는 스코프 함수의 종류와 그 특징에 대해서 정리한다. 스코프 함수의 종류 스코프 함수에는 let, run, also, apply, with와 같이 총 5개의 종류가 있다. 이 스코프 함수들은 모두 함수를 파라미터로 받아서 동작하는데, with를 제외한 나머지 4 종류는 반환값과 파라미터로 받는 함수의 형태에 따라 다음과 같이 분류할 수 있다. 여기서 람다.. 2022. 12. 26.
[Kotlin] 백준 25325 : 학생 인기도 측정 문제 링크 25325번: 학생 인기도 측정 학생 이름이 공백으로 구분된 문자열 A가 주어진다. 문자열 A에는 중복된 학생 이름이 존재하지 않는다. 학생 이름은 알파벳 소문자로 이루어져 있다. 각 학생이 좋아하는 학생의 학생 이름 목록 www.acmicpc.net 문제 해설 맵과 정렬을 이용하여 풀 수 있는 문제다. 풀이 과정은 다음과 같다. 맵에는 Key로 학생의 이름을, Value로 학생들의 인기도를 저장한다. 학생 이름과 인기도를 필드로 갖는 Student 클래스에 Comparable 인터페이스를 구현하여 인기도는 내림차순, 인기도가 같으면 이름 기준 오름차순으로 정렬할 수 있게 한다. 인기도 저장이 끝난 이후에는 각 학생 이름과 인기도로 Student 객체를 생성하여 별도의 리스트나 배열에 저장한다.. 2022. 12. 25.
[Kotlin] 백준 1092 : 배 문제 링크 1092번: 배 첫째 줄에 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 각 크레인의 무게 제한이 주어진다. 이 값은 1,000,000보다 작거나 같다. 셋째 줄에는 박스의 수 M이 주어진다. M은 10,000보 www.acmicpc.net 문제 해설 문제를 풀기 위해 먼저 크레인의 무게 제한과 박스의 무게를 내림차순으로 정렬한다. 가장 짧은 시간 내에 모든 박스를 배로 옮기기 위해선 아직 남아있는 상자 중에 각 크레인이 옮길 수 있는 가장 무거운 상자를 옮겨야 한다. 구현 과정은 다음과 같다. 크레인의 무게 제한과 박스의 무게를 내림차순으로 정렬한다. 크레인의 가장 큰 무게제한보다 무거운 상자가 있다면 즉시 -1을 출력하고 프로그램을 종료한다. 그 외의 경우에는 현재 옮.. 2022. 12. 24.
[Spring Boot] Kotlin 기반 Spring Boot 프로젝트에서 파일 업로드하기 목차 기본 환경 IntelliJ Ultimate 2022.3 Spring Boot 2.7.6 Kotlin 1.7.21(JDK 11) Oracle 11g Swagger 3.0.0 mybaitis 2.3.0 Spring Boot 프로젝트에 Swagger 3.0.0을 적용하는 방법은 아래 포스트를 참고하면 된다. [Spring Boot] Kotlin 기반 Spring Boot 프로젝트에 Swagger 3.0.0 적용하기 개요 예제로 블로그에 글을 작성할 때 제목과 내용, 카테고리 일련번호와 파일 하나를 업로드하여 작성하는 API를 구현한다. Swagger를 통해 테스트하기 때문에 별도의 화면은 구성하지 않는다. Domain 블로그의 글과 관련된 BoardDTO를 작성한다. data class BoardDTO(.. 2022. 12. 23.
[Kotlin] 백준 1456 : 거의 소수 문제 링크 1456번: 거의 소수 어떤 수가 소수의 N제곱(N ≥ 2) 꼴일 때, 그 수를 거의 소수라고 한다. 두 정수 A와 B가 주어지면, A보다 크거나 같고, B보다 작거나 같은 거의 소수가 몇 개인지 출력한다. www.acmicpc.net 문제 해설 수의 범위가 주어졌을 때 해당 범위 내에서 소수의 거듭제곱이 되는 수의 개수를 찾는 문제다. 범위가 최대 \(10^{14}\)이지만 소수는 최대 \(10^{7}\) 범위 내에서만 찾으면 된다. 소수의 거듭제곱이 범위 내에 포함되는지를 찾아야하는데 \(10^{7}=\sqrt{10^{14}}\)이므로 \(10^7\)을 초과하는 소수는 거듭제곱을 하면 범위를 벗어나기 때문이다. 따라서 우선 에라토스테네스의 체를 이용하여 \(\sqrt{B}\) 이하인 소수를.. 2022. 12. 23.
Kotlin 기본 문법 10 : 커스텀 getter와 setter 목차 개요 Kotlin의 클래스 역시 Java와 마찬가지로 각 필드에 대한 getter와 setter가 존재한다. 이번 포스트에서는 Kotlin 클래스의 기본적인 getter와 setter 및 Kotlin 클래스의 커스텀 getter와 setter에 대해 정리한다. Kotlin 클래스의 기본 getter와 setter Kotlin에서 클래스를 작성하는 방법은 Kotlin 기본 문법 6 : 클래스와 접근 지정자 포스트에서 이미 다룬바가 있다. Kotlin 클래스의 필드는 기본적으로 Java와 달리 별도의 getter, setter 메소드로 접근하지 않는다. 대신 Kotlin에서는 클래스의 생성자를 작성하면 필드의 종류(val, var)에 따라 자동으로 getter와 setter를 생성해주고, 일반적으로 필.. 2022. 12. 22.
[Kotlin] 백준 25192 : 인사성 밝은 곰곰이 문제 링크 25192번: 인사성 밝은 곰곰이 첫번째 새로운 사람이 들어온 뒤 pjshwa, chansol, chogahui05은 모두 곰곰티콘으로 인사했다. 두번째 새로운 사람이 들어온 뒤 pjshwa와 chansol은 다시 곰곰티콘으로 인사했다. www.acmicpc.net 문제 해설 Set을 사용하여 풀 수 있는 문제다. 새로운 사람이 입장하고 각 유저들이 처음 입력하는 채팅은 모두 곰곰티콘 인사가 된다. 따라서 채팅을 입력한 유저의 닉네임을 Set에 저장하는 것에 성공하면(=채팅을 처음 입력한 유저라서 곰곰티콘으로 인사한 경우라면) count를 1 증가시킨다. ENTER가 입력되면 Set을 초기화하고 같은 과정을 수행하면 된다. ENTER가 입력되면 새로운 Set으로 초기화하는 방법을 사용했다. c.. 2022. 12. 21.