전체 글
[IntelliJ] 인텔리제이 Gradle?
Kotlin 공식 유튜브를 보면서 공부하는데 그래들에 추가하는 장면이 나왔다. 엥? 제가 아는 그래들은 안드로이드 스튜디오의 그래들 밖에 없었는데요..? ㅠ_ㅠ? 그래서 파일 검색을 했는데 엥!! 내 파일엔 그래들 파일이 없다. 이게 어떻게 된 일일까? 그래서 공식문서에 들어와서 검색을 해보니까 https://www.jetbrains.com/help/idea/gradle.html Gradle | IntelliJ IDEA www.jetbrains.com 이 문서를 찾을 수 있었다....! 파일 > 새로 만들기 > 프로젝트 로 들어가면 요렇게! 뜨는 걸 볼 수 있다. 빌드 시스템에 Gradle이 있는게 보이시나요 ..? 원래 Inteillij로 세팅 되어있었다.!!
[Kotlin Tips] Deduplicating Collection Items
https://www.youtube.com/watch?v=ECOf0PeSANw 코틀린의 콜렉션 (리스트, Set,,) 에서 중복을 제거하는 방법에 대해서 꿀팁을 알려준다고 한다! val fruitBasket = listOf( "Apple", "Banana", "Cherry", "Apple", "Apple", "APPLE", "BANANA", "Durian" ) 자 요런 리스트가 있다고 생각해보자~! 이때 여기서 중복된 과일이 보인다! Apple이 왜이렇게 많은 거야,,?! 여기서 중복된 과일을 지워보자! 이때 어떤 방법이 생각나나요? 일단 두가지 방법이 머릿속에 삭 스칠 것이다. 방법 1. distinct() 함수를 사용한다. fun main() { val unique = fruitBasket.disti..
[Kotlin Tips] Kotlin에서 Shadowing을 다루는 방법
Fully Qualified Names to the Rescue! | Kotlin Tips 5월 20일에 올라온 따끈따끈한(?) 영상이다! 만약에 이런 코드가 있다고 생각해보자. package io.sebi.demo fun openFile() { println("Opening file (top level)...") } class Repo { fun openFile() { println("Opening file (repository)...") } fun readFile() { openFile() } } 이때 readFile()을 호출한다면 출력 값은 어떤게 나올까? 다들 당연히 알겠지만 Opening file (repository)...이다. 근데 Kotlin에서는 shadowing일 경우에 탑 레벨에 있..
[백준][코틀린] 1644 소수의 연속합
문제 내용 문제 하나 이상의 연속된 소수의 합으로 나타낼 수 있는 자연수들이 있다. 몇 가지 자연수의 예를 들어 보면 다음과 같다. 3 : 3 (한 가지) 41 : 2+3+5+7+11+13 = 11+13+17 = 41 (세 가지) 53 : 5+7+11+13+17 = 53 (두 가지) 하지만 연속된 소수의 합으로 나타낼 수 없는 자연수들도 있는데, 20이 그 예이다. 7+13을 계산하면 20이 되기는 하나 7과 13이 연속이 아니기에 적합한 표현이 아니다. 또한 한 소수는 반드시 한 번만 덧셈에 사용될 수 있기 때문에, 3+5+5+7과 같은 표현도 적합하지 않다. 자연수가 주어졌을 때, 이 자연수를 연속된 소수의 합으로 나타낼 수 있는 경우의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 자연수 N이..
[코틀린] 에스토스테네스의 체 (소수 찾기)
백준 문제를 풀던 중 에스토스테네스의 체를 이용하는 문제를 풀게 되었다. Kotlin으로 작성한 템플릿을 기억해두기 위해 간단하게 포스팅 한다. private fun sosu(n: Int) : IntArray{ val isSosu = BooleanArray(n+1) {true} for (i in 2 .. kotlin.math.sqrt(n.toDouble()).toInt()) { if (isSosu[i]) { var j = 2 while (i * j
[백준][코틀린] 2842 집배원 한상덕
문제 내용 문제 상덕이는 언덕 위에 있는 마을의 우체국에 직업을 얻었다. 마을은 N×N 행렬로 나타낼 수 있다. 행렬로 나뉘어진 각 지역은 우체국은 'P', 집은 'K', 목초지는 '.' 중 하나로 나타낼 수 있다. 또, 각 지역의 고도도 알고 있다. 매일 아침 상덕이는 마을의 모든 집에 우편을 배달해야 한다. 배달은 마을에 하나밖에 없는 우체국 'P'가 있는 곳에서 시작한다. 상덕이는 현재 있는 칸과 수평, 수직, 대각선으로 인접한 칸으로 이동할 수 있다. 마지막 편지를 배달하고 난 이후에는 다시 우체국으로 돌아와야 한다. 상덕이는 이렇게 매일 아침 배달을 하는 것이 얼마나 힘든지 궁금해졌다. 상덕이가 배달하면서 방문한 칸 중 가장 높은 곳과 낮은 곳의 고도 차이를 피로도라고 하자. 이때, 가장 작은 ..
[백준][코틀린] 12015 가장 긴 증가하는 부분 수열 2
문제 내용 문제 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다. 입력 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000,000) 출력 첫째 줄에 수열 A의 가장 긴 증가하는 부분 수열의 길이를 출력한다. 예제 입력 예제 출력 6 10 20 10 30 20 50 4 문제 풀이 2022.02.23 - [Algorithm/with Kotlin] - [백준][코틀린] 11053 가장..
[백준][코틀린] 2805 나무 자르기
문제 내용 문제 상근이는 나무 M미터가 필요하다. 근처에 나무를 구입할 곳이 모두 망해버렸기 때문에, 정부에 벌목 허가를 요청했다. 정부는 상근이네 집 근처의 나무 한 줄에 대한 벌목 허가를 내주었고, 상근이는 새로 구입한 목재절단기를 이용해서 나무를 구할것이다. 목재절단기는 다음과 같이 동작한다. 먼저, 상근이는 절단기에 높이 H를 지정해야 한다. 높이를 지정하면 톱날이 땅으로부터 H미터 위로 올라간다. 그 다음, 한 줄에 연속해있는 나무를 모두 절단해버린다. 따라서, 높이가 H보다 큰 나무는 H 위의 부분이 잘릴 것이고, 낮은 나무는 잘리지 않을 것이다. 예를 들어, 한 줄에 연속해있는 나무의 높이가 20, 15, 10, 17이라고 하자. 상근이가 높이를 15로 지정했다면, 나무를 자른 뒤의 높이는 ..
[백준][코틀린] 11054 가장 긴 바이토닉 부분 수열
문제 내용 문제 수열 S가 어떤 수 Sk를 기준으로 S1 SN을 만족한다면, 그 수열을 바이토닉 수열이라고 한다. 예를 들어, {10, 20, 30, 25, 20}과 {10, 20, 30, 40}, {50, 40, 25, 10} 은 바이토닉 수열이지만, {1, 2, 3, 2, 1, 2, 3, 2, 1}과 {10, 20, 30, 40, 20, 30} 은 바이토닉 수열이 아니다. 수열 A가 주어졌을 때, 그 수열의 부분 수열 중 바이토닉 수열이면서 가장 긴 수열의 길이를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 수열 A의 크기 N이 주어지고, 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ Ai ≤ 1,000) 출력 첫째 줄에 수열 A의 부분 수열 중에서 가장 ..
[백준][코틀린] 11053 가장 긴 증가하는 부분 수열
문제 내용 문제 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다. 입력 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000) 출력 첫째 줄에 수열 A의 가장 긴 증가하는 부분 수열의 길이를 출력한다. 예제 입력 예제 출력 6 10 20 10 30 20 50 4 문제 풀이 가장 긴 증가하는 부분 수열은 여러가지 방법으로 풀 수 있다. 실제로 가장 긴 증가하는 부분 수열 시리즈를 풀면 다양..
[안드로이드] 버튼 스타일 지정하기
안드로이드에서 기본으로 버튼을 사용하면 Primary 컬러대로 색상이 나오고 기본 값대로 나온다. 색상 값을 지정하지 않았다면, 안드로이드 버튼 색이 보라색으로 뜬다거나 원하는 값이 세팅이 되지 않는 것을 확인할 수 있을 것이다. 하지만, 그렇게 쓰는 사람은 아마 없을 것(?)이다. 개발 초창기에는 배경의 컬러만 변경해서 사용하거나, 백그라운드 이미지를 변경하였다. 이번에는, Button에 style을 지정하여 사용하는 방법을 알아볼 것이다. 만들어야 될 버튼은 위와 같다. radius는 8dp, top과 bottom의 padding은 16dp이다. values > style.xml (없다면 생성)에 버튼 스타일을 생성할 것이다. 이렇게 버튼 스타일을 생성하고나서 사용할 때는 이렇게 불러와서 사용하면 된..
[백준][코틀린] 2579 계단 오르기
문제 내용 문제 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점수를 얻게 된다. 예를 들어 와 같이 시작점에서부터 첫 번째, 두 번째, 네 번째, 여섯 번째 계단을 밟아 도착점에 도달하면 총 점수는 10 + 20 + 25 + 20 = 75점이 된다. 계단 오르는 데는 다음과 같은 규칙이 있다. 1. 계단은 한 번에 한 계단씩 또는 두 계단씩 오를 수 있다. 즉, 한 계단을 밟으면서 이어서 다음 계단이나, 다음 다음 계단으로 오를 수 있다. 2. 연속된 세 개의 계단을 모두 밟아서는 안 된다. 단, 시작점은 계단에 포함되지 않는다. 3. 마지막 도착 계단은 반드시 밟아야 한다..
[안드로이드] 다크모드 색상 세팅하기
처음에 안드로이드 UI 관련 세팅을 해둘때 헤맸던 기억이 나, 누군가에게 도움이 되길 바라며 글을 남겨본다. 우선 colors 파일을 하나 더 생성해주어야된다. 기본으로 들어가있는 파일에 values > colors.xml 이 이미 생성 되어 있는 것을 확인할 수 있다. theme에 (night) 파일이 하나 더 생겨 있는 것을 볼 수 있다. 이렇게 colors.xml (night)를 만들어보자. values에 새 파일을 생성해준다. 파일 이름은 똑같이 colors 라고 세팅 해준다. Directory name을 values-night로 설정해준다. (한정자를 설정해주는 것이다.) 이렇게 colors 파일이 생성 된 것을 확인할 수 있다. 다크모드 말고도 더 많은 경우에 Directory name 변경으..
[백준][코틀린] 10844 쉬운 계단 수
문제 내용 문제 45656이란 수를 보자. 이 수는 인접한 모든 자리의 차이가 1이다. 이런 수를 계단 수라고 한다. N이 주어질 때, 길이가 N인 계단 수가 총 몇 개 있는지 구해보자. 0으로 시작하는 수는 계단수가 아니다. 입력 첫째 줄에 N이 주어진다. N은 1보다 크거나 같고, 100보다 작거나 같은 자연수이다. 출력 첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다. 예제 입력 예제 출력 1 9 2 17 문제 풀이 항상 생각하는건데 DP는 아이디어만 떠올리면 그뒤로는 쉬운거 같다.. 문제는 그 아이디어를 떠올리기 힘들다는 것.. 이 문제는 인접한 자리의 차이가 1이다. 가 힌트라고 볼 수 있다. 각 자리를 도는데 이때 첫자리를 제외하곤, 들어갈 수 있는 값이 0부터 9까지 이..
[백준][코틀린] 1149 RGB 거리
문제 내용 문제 RGB거리에는 집이 N개 있다. 거리는 선분으로 나타낼 수 있고, 1번 집부터 N번 집이 순서대로 있다. 집은 빨강, 초록, 파랑 중 하나의 색으로 칠해야 한다. 각각의 집을 빨강, 초록, 파랑으로 칠하는 비용이 주어졌을 때, 아래 규칙을 만족하면서 모든 집을 칠하는 비용의 최솟값을 구해보자. - 1번 집의 색은 2번 집의 색과 같지 않아야 한다. - N번 집의 색은 N-1번 집의 색과 같지 않아야 한다. - i(2 ≤ i ≤ N-1)번 집의 색은 i-1번, i+1번 집의 색과 같지 않아야 한다. 입력 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 ..