티스토리 뷰
반응형
코틀린에서 순열을 구하는 방법.
1. 순열의 개념
순열이란 순서에 상관있는 배열을 말합니다. 예를 들어, 숫자 배열 [1, 2, 3]에서 순열을 구하면 다음과 같은 모든 조합이 나옵니다:
- [1, 2, 3]
- [1, 3, 2]
- [2, 1, 3]
- [2, 3, 1]
- [3, 1, 2]
- [3, 2, 1]
이런 조합들을 구하는 것이 순열.
fun getPermutations(arr: MutableList<Int>, depth: Int, n: Int, result: MutableList<List<Int>>) {
if (depth == n) {
result.add(arr.toList()) // 배열의 복사본을 추가
return
}
for (i in depth until n) {
arr.swap(depth, i) // 요소 교환
getPermutations(arr, depth + 1, n, result)
arr.swap(depth, i) // 다시 원래 상태로 복원
}
}
// 배열의 두 요소를 교환하는 확장 함수
fun MutableList<Int>.swap(i: Int, j: Int) {
val temp = this[i]
this[i] = this[j]
this[j] = temp
}
2. 재귀로 순열 구하기
순열을 구하는 알고리즘은 각 자리의 숫자를 고정하고, 나머지 숫자들의 순열을 재귀적으로 구하는 방식입니다.
3. 주요 과정
- 재귀 호출: getPermutations 함수는 현재 자리(depth)의 숫자를 고정하고, 나머지 자리에 대해 순열을 재귀적으로 구합니다.
- swap: 각 자리의 숫자를 교환하여 다른 순서를 만듭니다.
- 종료 조건: depth가 배열의 길이와 같아지면 그때까지 만든 순열을 결과에 추가합니다.
이 방식으로 숫자의 모든 순열을 구할 수 있습니다.
반응형
'알고리즘' 카테고리의 다른 글
재귀 함수 알고리즘 . (1) | 2024.02.24 |
---|---|
완전탐색 알고리즘. (0) | 2024.02.24 |
깊이 우선 탐색(DFS) 너비 우선 탐색 (BFS) 에 대하여. (3) | 2023.08.17 |
[코딩 테스트] Level. 2 N개의 최소공배수 (코틀린) (0) | 2023.08.16 |
[코딩 테스트] Level. 2 JadenCase 문자열 만들기 (코틀린) (0) | 2023.08.07 |
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- retrofit
- node.js
- Custom
- direction
- 알고리즘
- listener
- Token
- bitmap
- ScrollView
- Android Studio
- 코딩테스트
- GitHub
- 재귀함수
- app bundle
- java
- ec2
- Firebase
- ios
- Flutter
- ExoPlayer
- message
- Kotlin
- Crop
- API
- android
- flutter_new_badger
- Hilt
- https
- error
- FCM
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함