안녕하세요. 이번에는 프로그래머스 나누어 떨어지는 숫자 배열을 풀어보려고 합니다.
https://school.programmers.co.kr/learn/courses/30/lessons/12910
Problem
array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.
divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.
[제한 사항]
○ arr은 자연수를 담은 배열입니다.
○ 정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다.
○ divisor는 자연수입니다.
○ array는 길이 1 이상인 배열입니다.
Solution
class Solution {
fun solution(arr: IntArray, divisor: Int): IntArray {
var answer = intArrayOf()
for(i in 0..arr.size - 1) {
if(arr[i] % divisor == 0) {
answer += arr[i]
}
}
answer.sort()
if(answer.size == 0) answer += -1
return answer
}
}
이번 문제는 divisor로 나누어 떨어지는 값들을 answer에 저장시키고 sort를 사용해서 정렬 시키는 방식으로 문제를 접근하였다. 그리고 divisor로 떨어지는 값이 없는 경우 -1을 추가하기위해 answer의 사이즈를 판단하는 코드를 추가했다.
1. 다른 사람 코드
class Solution {
fun solution(arr: IntArray, divisor: Int): IntArray {
val answer = arr.sorted().filter {
it % divisor == 0
}
return if (answer.isEmpty()) intArrayOf(-1) else answer.toIntArray()
}
}
다른 사람의 코드를 통해서 새로운 접근 방법을 공부해보았다. 처음부터 sorted()를 사용해서 배열을 오름차순으로 정리하고 filter기능을 통해서 divisor을 떨어지는 값으로 배열을 처리하는 방식으로 문제에 접근한 방법이였다. 그리고 마지막으로 answer가 비어있는지 값이 있는지를 판단한 후 만약 비어있으면 -1을 아니면 answer을 출력하도록 하는 코드였다.
Performance
1. 내가 작성한 코드 | 2. 다른 사람 코드 |
반응형
'프로그래머스 Algorithm' 카테고리의 다른 글
[프로그래머스] 제일 작은 수 제거하기 Kotlin (0) | 2023.11.21 |
---|---|
[프로그래머스] 핸드폰 번호 가리기 Kotlin (0) | 2023.11.20 |
[프로그래머스] 음양 더하기 Kotlin (0) | 2023.11.18 |
[프로그래머스] 서울에서 김서방 찾기Kotlin (0) | 2023.11.17 |
[프로그래머스] 콜라츠 추측 Kotlin (0) | 2023.11.16 |