코틀린 32

간만의 알고리즘 공부 - 12 (귤 고르기)

문제 설명경화는 과수원에서 귤을 수확했습니다. 경화는 수확한 귤 중 'k'개를 골라 상자 하나에 담아 판매하려고 합니다. 그런데 수확한 귤의 크기가 일정하지 않아 보기에 좋지 않다고 생각한 경화는 귤을 크기별로 분류했을 때 서로 다른 종류의 수를 최소화하고 싶습니다.예를 들어, 경화가 수확한 귤 8개의 크기가 [1, 3, 2, 5, 4, 5, 2, 3] 이라고 합시다. 경화가 귤 6개를 판매하고 싶다면, 크기가 1, 4인 귤을 제외한 여섯 개의 귤을 상자에 담으면, 귤의 크기의 종류가 2, 3, 5로 총 3가지가 되며 이때가 서로 다른 종류가 최소일 때입니다.경화가 한 상자에 담으려는 귤의 개수 k와 귤의 크기를 담은 배열 tangerine이 매개변수로 주어집니다. 경화가 귤 k개를 고를 때 크기가 서로..

Dev/Algorithm 2024.07.09

간만의 알고리즘 공부 - 11 (나머지가 1이 되는 수 찾기)

문제 설명자연수 n이 매개변수로 주어집니다. n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다.제한 사항- 3 ≤ n ≤ 1,000,000 입출력 예 입출력 예 설명- 10을 3으로 나눈 나머지가 1이고, 3보다 작은 자연수 중에서 문제의 조건을 만족하는 수가 없으므로, 3을 return 해야 합니다.- 12를 11로 나눈 나머지가 1이고, 11보다 작은 자연수 중에서 문제의 조건을 만족하는 수가 없으므로, 11을 return 해야 합니다.  내가 푼 방법fun solution(n: Int): Int { for (i in 1..n) { if (n % i == 1) { ..

Dev/Algorithm 2024.07.08

간만의 알고리즘 공부 - 10 (x만큼 간격이 있는 n개의 숫자)

문제 설명함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.제한 사항- x는 -10000000 이상, 10000000 이하인 정수입니다.- n은 1000 이하인 자연수입니다.  내가 푼 방법fun solution(x: Int, n: Int): LongArray { return LongArray(n) { i -> ((i + 1) * x).toLong()}} 위와 같이 코드를 작성하니 테스트 케이스를 전부 통과하지 못했다. 일단 처음에는 무슨 문제인지 이해하지 못했다.  그래서 IDE 에서 이런 저런 케이스를 테스트해보다가 "(i+1) * x..

Dev/Algorithm 2024.07.07

간만의 알고리즘 공부 - 9 (멀리 뛰기 | 피보나치 수열)

문제 설명효진이는 멀리 뛰기를 연습하고 있습니다. 효진이는 한번에 1칸, 또는 2칸을 뛸 수 있습니다. 칸이 총 4개 있을 때, 효진이는(1칸, 1칸, 1칸, 1칸)(1칸, 2칸, 1칸)(1칸, 1칸, 2칸)(2칸, 1칸, 1칸)(2칸, 2칸)의 5가지 방법으로 맨 끝 칸에 도달할 수 있습니다. 멀리뛰기에 사용될 칸의 수 n이 주어질 때, 효진이가 끝에 도달하는 방법이 몇 가지인지 알아내, 여기에 1234567를 나눈 나머지를 리턴하는 함수, solution을 완성하세요. 예를 들어 4가 입력된다면, 5를 return하면 됩니다.제한 사항n은 1 이상, 2000 이하인 정수입니다. 해당 문제는 손으로 일일히 구하는 형태로는 어느정도 구하겠는데, 어떻게 해결해야할지 감이 잡히지 않았다. 처음 접근은 멀리뛰..

Dev/Algorithm 2024.07.06

간만의 알고리즘 공부 - 8 (하샤드 수)

문제 설명양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.제한 조건x는 1 이상, 10000 이하인 정수입니다. 입출력 예 내가 푼 방법fun solution(x: Int): Boolean { var haxadNum = x.toString().split("").filter { it.isNotEmpty() }.map{ it.toInt() }.sum() return x % haxadNum == 0} 코드 첨삭fun solution(x: Int): Boolean { //..

Dev/Algorithm 2024.07.06

간만의 알고리즘 공부 - 7 (두 정수 사이의 합 | 등차수열의 합)

문제 설명두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요.예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다.제한 조건a와 b가 같은 경우는 둘 중 아무 수나 리턴하세요.a와 b는 -10,000,000 이상 10,000,000 이하인 정수입니다.a와 b의 대소관계는 정해져있지 않습니다.입출력 예  내가 푼 방법fun solution(a: Int, b: Int): Long { var answer: Long = 0 var low = a var high = b if (low > high) { var temp = high high = low lo..

Dev/Algorithm 2024.07.05

간만의 알고리즘 공부 - 5 (행렬 곱셈)

문제 설명2차원 행렬 arr1과 arr2를 입력받아, arr1에 arr2를 곱한 결과를 반환하는 함수, solution을 완성해주세요.제한 조건- 행렬 arr1, arr2의 행과 열의 길이는 2 이상 100 이하입니다.- 행렬 arr1, arr2의 원소는 -10 이상 20 이하인 자연수입니다.- 곱할 수 있는 배열만 주어집니다. 입출력 예  내가 시도한 방법fun solution(arr1: Array, arr2: Array): Array { var answer = arrayOf() val answerList = answer.toMutableList() for (arr1RowIndex in arr1.indices) { var answerColumn = mutableListOf(..

Dev/Algorithm 2024.07.03

간만의 알고리즘 공부 - 4 (이진 변환 반복하기)

문제 설명0과 1로 이루어진 어떤 문자열 x에 대한 이진 변환을 다음과 같이 정의합니다.- x의 모든 0을 제거합니다.- x의 길이를 c라고 하면, x를 "c를 2진법으로 표현한 문자열"로 바꿉니다.예를 들어, x = "0111010"이라면, x에 이진 변환을 가하면 x = "0111010" -> "1111" -> "100" 이 됩니다.0과 1로 이루어진 문자열 s가 매개변수로 주어집니다. s가 "1"이 될 때까지 계속해서 s에 이진 변환을 가했을 때, 이진 변환의 횟수와 변환 과정에서 제거된 모든 0의 개수를 각각 배열에 담아 return 하도록 solution 함수를 완성해주세요.제한사항s의 길이는 1 이상 150,000 이하입니다.s에는 '1'이 최소 하나 이상 포함되어 있습니다. 어떻게 해야하는지..

Dev/Algorithm 2024.07.03

간만의 알고리즘 공부 - 3 (정수제곱근 판별)

문제 설명임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.제한 사항n은 1이상, 50000000000000 이하인 양의 정수입니다.입출력 예n = 121 / return 144n = 3 / return -1입출력 예 설명입출력 예#1 - 121은 양의 정수 11의 제곱이므로, (11+1)를 제곱한 144를 리턴합니다.입출력 예#2 - 3은 양의 정수의 제곱이 아니므로, -1을 리턴합니다.  내장 함수들을 활용하지 않고 풀어서 아쉽다. 내가 푼 방법class Solution { fun solution(n: Long): Long { ..

Dev/Algorithm 2024.06.30

간만의 알고리즘 공부 - 2 (최소공배수)

문제문제 설명두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배수는 n 개의 수들의 배수 중 공통이 되는 가장 작은 숫자가 됩니다. n개의 숫자를 담은 배열 arr이 입력되었을 때 이 수들의 최소공배수를 반환하는 함수, solution을 완성해 주세요.제한 사항- arr은 길이 1이상, 15이하인 배열입니다.- arr의 원소는 100 이하인 자연수입니다.입출력 예입 : [2,6,8,14] / 출 : 168입 : [1,2,3] / 출 : 6  산수 관점에서는 가능했는데 어떻게 구현해야할지 몰라서 접근방법(?)이라고 적혀있지만 거의 답이였는 ..

Dev/Algorithm 2024.06.27