문제 설명 |
정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. |
제한 조건 |
|
입출력 예 | |
numbers | result |
[2,1,3,4,1] | [2,3,4,5,6,7] |
[5,0,2,7] | [2,5,7,9,12] |
|
나의 풀이
1. 두 수를 더한 숫자를 담을 ArrayList를 생성한다.
2. 두 개의 숫자를 순서대로 뽑은 후 더해서 list에 추가하는데, 이 때 중복되는 값이 이미 존재하면 추가하지 않는다.
3. answer을 오름차순으로 정렬한 후 리턴한다.
class Solution {
fun solution(numbers: IntArray): IntArray {
var answer: IntArray = intArrayOf()
for (i in numbers.indices) {
for (j in numbers.indices) {
val ins = numbers[i] + numbers[j]
if (!answer.contains(ins) && i!=j) {
answer += ins
}
}
}
return answer.sortedArray()
}
}
Kotlin1 코드 정리
class Solution {
fun solution(numbers: IntArray): IntArray {
val list = numbers.toList()
return list.withIndex().flatMap { i -> list.withIndex().map { j -> i to j } }
.filter { it.first.index != it.second.index }
.map { it.first.value + it.second.value }
.toSortedSet()
.toIntArray()
}
}
Kotlin2 코드 정리
class Solution {
fun solution(numbers: IntArray): IntArray {
val answers: MutableList<Int> = arrayListOf()
var sum: Int
var i = 0
var j = 0
while (i < numbers.size - 1) {
j = i + 1
while (j < numbers.size) {
sum = numbers[i] + numbers[j]
answers.add(sum)
j++
}
i++
}
answers.sort()
return answers.distinct().toIntArray()
}
}
* 코틀린 list에서 distinct()를 사용하면 중복값 제거
'프로그래머스 > Kotlin | Level1' 카테고리의 다른 글
[프로그래머스/Kotlin]Level1 - 체육복 (0) | 2022.01.20 |
---|---|
[프로그래머스/Kotlin]Level1 - 2016년 (0) | 2022.01.12 |
[프로그래머스/Kotlin]Level1 - 문자열 내 마음대로 정렬하기 (0) | 2022.01.05 |
[프로그래머스/Kotlin]Level1 - 약수의 개수와 덧셈 (0) | 2021.12.20 |
[프로그래머스/Kotlin]Level1 - 하샤드수 (0) | 2021.09.27 |