티스토리 뷰
반응형
코틀린에서 순열을 구하는 방법.
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
- ios
- ExoPlayer
- Firebase
- listener
- Kotlin
- Token
- Android Studio
- java
- Hilt
- Flutter
- error
- message
- FCM
- 알고리즘
- Crop
- retrofit
- app bundle
- ScrollView
- API
- node.js
- android
- 재귀함수
- direction
- 코딩테스트
- Custom
- ec2
- flutter_new_badger
- bitmap
- https
- GitHub
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함