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

Kotlin152

[Kotlin] 백준 1308 : D-Day 문제 링크 1308번: D-Day 첫째 줄에 오늘의 날짜가 주어지고, 두 번째 줄에 D-Day인 날의 날짜가 주어진다. 날짜는 연도, 월, 일순으로 주어지며, 공백으로 구분한다. 입력 범위는 1년 1월 1일부터 9999년 12월 31일 까지 이다. www.acmicpc.net 문제 해설 날짜 계산 문제다. 처음에는 단순히 날짜만 계산하면 될 것이라 생각하고 두 입력을 시간값으로 파싱하여 그 차이가 1000년 이상인 경우만 생각했다가 틀렸습니다가 나왔다. 원인을 분석해보니 단순히 날짜의 차이만 계산하다보니 중간의 수많은 윤년의 존재로 인해 y+1000년 m월 d일 이전의 날짜인데도 365,000일이 넘는 경우가 발생하여 gg를 출력한 것이다. 그리하여 원시적인 방법으로 일수를 계산하는 것으로 해결하는 쪽으.. 2022. 11. 23.
[Kotlin] 백준 1251 : 단어 나누기 문제 링크 1251번: 단어 나누기 알파벳 소문자로 이루어진 단어를 가지고 아래와 같은 과정을 해 보려고 한다. 먼저 단어에서 임의의 두 부분을 골라서 단어를 쪼갠다. 즉, 주어진 단어를 세 개의 더 작은 단어로 나누는 것이다 www.acmicpc.net 문제 해설 완전 탐색법으로 풀어야 하는 문제다. 주어진 단어를 3개로 나눈 후 각각을 뒤집어서 합쳐서 나온 단어들 중 사전순으로 가장 앞서는 단어를 구하기 위해서 2중 반복문을 돌려서 각 경우의 단어를 만든다. 이후, 새롭게 만들어진 단어와 이전 케이스에서 나온 단어를 비교하여 사전순으로 앞서는 단어를 비교하여 앞서는 단어를 결과에 저장하는 과정을 반복하여 해답을 구한다. Kotlin에서는 slice() 메소드를 통해 문자열을 쉽게 나눌 수 있으며 re.. 2022. 11. 23.
[Kotlin] 백준 1181 : 단어 정렬 문제 링크 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 문제 해설 여러 문자열의 입력이 주어졌을 때 입력된 문자열들의 중복을 제거하고 길이가 짧은순으로 정렬하되, 같은 길이의 문자열은 사전순으로 정렬하는 문제이다. 여러가지 해법이 있겠지만 나의 해결 순서는 다음과 같다. 입력받은 문자열을 배열에 저장 중복 문자열 제거 문자열을 사전순으로 정렬 문자열의 길이가 짧은 순으로 정렬 2. 중복 문자열 제거의 경우에는 Set에 입력받은 문자열을 저장하는 방법도 있지만 나는 배열 객체에 제공되는 disti.. 2022. 11. 22.
[Kotlin] 백준 1811 : Adjacent Mastermind 문제 링크 1811번: Adjacent Mastermind Mastermind is a game played with a supply of pegs of various colours, or in the absence of proper equipment, pen and paper (or a computer!) using letters A, B, C, etc, as ‘pegs’ with the different letters representing different colours. One player choo www.acmicpc.net 문제 해설 번역이 되지 않은 문제라 그런지 문제를 푸는 시도조차 한 사람들이 거의 없는 문제이다. 대충 해석을 해보면 플레이어가 추측한 guess와 target이 주어졌을 .. 2022. 11. 22.
Kotlin 기본 문법 3 : String 목차 개요 Kotlin의 String 클래스는 Java와 몇가지 차이점이 있다. 이번 포스트에서는 이전 포스트에서 간단하게만 소개했던 Kotlin의 String 클래스에 대해 더 정리하고자 한다. 문자열의 동등 비교 Kotlin에서는 Java와 달리 == 연산자를 이용하여 문자열의 값이 같은지 비교할 수 있다. Kotlin 문자열에서의 ==는 Java String 클래스의 equals() 메소드와 같은 역할을 한다. 물론 Kotlin에서도 equals() 메소드를 이용하여 두 문자열이 같은지 비교할 수 있지만 == 연산자를 사용하는 것을 권장하고 있다. Java에서 문자열의 대소문자를 무시하고 비교하려면 equalsIgnoreCase()라는 별도의 메소드를 사용해야 하는 것과 달리 Kotlin에서는 eq.. 2022. 11. 21.
Kotlin 기본 문법 2 : 자료형과 null-safe 목차 개요 Java에서는 자료형이 원시형(Primitive Type)과 참조형(Reference Type)으로 나뉜다. 원시형이란 int, long, double 등과 같이 실제 자료값만을 저장하는 타입이고, 참조형은 객체를 생성하고 메모리 영역에 값을 저장한 후 메모리 주소를 통해 값을 참조하는 타입으로, 원시형을 제외한 나머지 타입(배열, 열거형, 각종 클래스의 객체 등)이 포함된다. 원시 자료형의 Wrapper Class인 Integer, Long, Double 등 또한 모두 참조형에 속한다. Kotlin의 자료형에는 원시형이 존재하지 않고 모든 자료형이 참조형이다. 다르게 말하면, 모든 자료형은 클래스이고 모든 변수는 객체가 된다는 뜻이다. 이 때문에 모든 자료형의 첫 글자가 대문자로 작성된다. .. 2022. 11. 19.
Kotlin 기본 문법 1 : 개요 및 변수와 함수 목차 Kotlin이란 무엇인가? Kotlin은 IntelliJ IDEA의 개발사인 JetBrains에서 2011년에 공개한 크로스 플랫폼 프로그래밍 언어이다. 기본적으로 Java와 100% 호환이 되기 때문에 Java를 사용하는 Android, Web Application 등의 개발에 사용할 수 있다는 특징이 있으며, 이러한 호환성 덕에 Java로 작성된 라이브러리 또한 그대로 사용할 수 있다. 이번 포스팅 시리즈에서는 Kotlin의 기본 문법에 대해 Java와 비교해가며 작성하고자 한다. Kotlin의 기본 문법 Kotlin은 Java에 비해 비교적 간결한 문법을 제공한다. Kotlin은 모든 소스 파일에 반드시 클래스를 선언할 필요가 없다. Java에서는 모든 소스파일에 파일명과 동일한 이름의 pub.. 2022. 11. 18.
Kotlin : 시작하기에 앞서 Kotlin을 공부하게 된 계기 Kotlin이라는 프로그래밍 언어에 대해 알게된 것은 대학 4학년 때였다. 당시에 졸업 프로젝트로 안드로이드 앱을 제작하고 있었는데, 프로젝트와 관련된 정보를 찾기 위해 구글의 안드로이드 개발자 가이드에서 Kotlin 샘플 코드가 Java보다 우선적으로 소개되는 것을 보고 Android 개발 언어로 Java만 알고있던 나에게는 크나큰 충격으로 다가왔다. 하지만 그때 당시에는 이미 Java로 어느정도 개발이 진행된 상태여서 새로 Kotlin을 배우면서 프로젝트를 진행하는 것은 어려울 것이라는 생각에 그냥 그런 것이 있다 정도로만 생각하고 Kotlin을 배제하고 프로젝트를 진행했다. 그 뒤에는 익숙한 Java 쪽으로 취업을 하려고 준비하다 보니 취업준비라는 핑계 하에 Kotl.. 2022. 11. 18.