본문 바로가기

알고리즘

[Kotlin] 순열 구하기 코틀린에서 순열을 구하는 방법.  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, depth: Int, n: Int, result: MutableList>) { if (depth == n) { result.add(arr.toList()) // 배열의 복사본을 추가 return } for (i in depth until n) { arr.swap(dept.. 더보기
재귀 함수 알고리즘 . 아래 블로그 참조 https://itandhumanities.tistory.com/27 [코틀린을 다루는 기술] Kotlin에서의 재귀 함수 사용 이 글은 '길벗'사의 '코틀린을 다루는 기술'을 보고 작성한 글입니다. 더 자세한 내용은 해당 책에서 참고하시면 좋을 것 같습니다. 재귀와 공재귀, 꼬리 호출 만약, 팩토리얼 함수를 구현하다고 itandhumanities.tistory.com 재귀함수를 알아보기 전에 팩토리얼 함수를 알아보자 . 팩토리얼 함수란 특정값에서 1까지 모두 곱하는 연산을 의미한다. 예를들어 특정함수가 10 이라고 한다면 10x9x8x7x6x5x4x3x2x1 의 값을 구하는 것을 의미한다. private fun factorial(n: Int): Long { return if (n ==.. 더보기
완전탐색 알고리즘. 완전 탐색 알고리즘은 모든 가능한 경우의 수를 탐색해서 최적의 결과를 찾는 알고리즘이다. 종류로는 아래와 같은 것 들이 있다. -브루트포스 -재귀함수 -비트마스크 -백트래킹 -순역 -DFS / BFS 아래의 블로그에 자세히 나와있다. https://hongjw1938.tistory.com/78 알고리즘 - 완전탐색(Exhaustive Search) 1. 완전탐색 알고리즘이란? 완전탐색은 간단히 가능한 모든 경우의 수를 다 체크해서 정답을 찾는 방법이다. 즉, 무식하게 가능한 거 다 해보겠다는 방법을 의미한다. 이 방법은 무식하게 한다는 hongjw1938.tistory.com ① Brute Force 기법 - 반복 / 조건문을 활용해 모두 테스트하는 방법 ② 순열(Permutation) - n개의 원소 .. 더보기
깊이 우선 탐색(DFS) 너비 우선 탐색 (BFS) 에 대하여. 코딩테스트 Level. 2 를 풀다 보니 도저히 어떻게 풀어야될지 모르겠는 문제들이 많이 나오는데 그 중 하나가 깊이 우선 탐색인 (DFS) 와 너비 우선 탐색 (BFS) 문제가 나올 경우이다. 코딩테스트를 문제를 풀면서 처음알게되었는데 아직은 익숙치 않아서 어려운 것 같다. 아래의 블로그에서 굉장히 설명을 잘 해주신 것 같다. https://devuna.tistory.com/32 [알고리즘] 깊이 우선 탐색(DFS) 과 너비 우선 탐색(BFS) [알고리즘] 깊이 우선 탐색(DFS)과 너비 우선 탐색(BFS) 그래프를 탐색하는 방법에는 크게 깊이 우선 탐색(DFS)과 너비 우선 탐색(BFS)이 있습니다. 📌여기서 그래프란, 정점(node)과 그 정점을 연결하 devuna.tistory.com 1.DFS .. 더보기
[코딩 테스트] Level. 2 N개의 최소공배수 (코틀린) 이번에는 N개의 최소 공배수 문제를 풀어보았습니다. 다른분들과 비슷하게 풀었는데 이게 깔끔해서 이 코드로 대체했습니다! private fun solution(arr: IntArray): Int { var answer = arr[0] for (i in 1 until arr.size) { answer = lcm(answer, arr[i]) } return answer } //최소 공배수 private fun lcm(a: Int, b: Int): Int = a * b / gcd(a, b) //최대 공약수 private fun gcd(a: Int, b: Int): Int = if (b != 0) gcd(b, a % b) else a 최소 공배수 , 최대공약수 알고리즘을 알고있으면 풀이가 그래도 쉬워졌습니다. 확.. 더보기
[코딩 테스트] Level. 2 JadenCase 문자열 만들기 (코틀린) 이번 코딩테스트는 JadenCase 문자열 만들기 이다. 사실 이 문제는 어려운 문제는 아니지만 어떤식으로 코드를 짜야하나 고민을 많이 했던 것 같다. https://school.programmers.co.kr/learn/courses/30/lessons/12951 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 var answer = "" val a = s.split(" ") a.forEachIndexed { index, it -> it.forEachIndexed { index2, c -> answer += if (index2 == 0) { c.. 더보기
[코딩 테스트] Level. 2 하노이의 탑 (코틀린) https://school.programmers.co.kr/learn/courses/30/lessons/12946 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr '하노이의 탑' 문제 이 문제는 어려워서 못 풀었다. 이 분이 그래도 잘 정리 해 주신 것 같다. https://shoark7.github.io/programming/algorithm/tower-of-hanoi '하노이의 탑' 이해하기 '하노이의 탑' 문제를 이해하고 문제 해결을 위한 핵심 통찰을 살핀 뒤 코드로 작성합니다. 이후 탑의 개수에 따른 총 이동 횟수를 구하는 일반항까지 수학적으로 유도.. 더보기
[코딩 테스트] Level. 1 추억 점수 (코틀린, Kotlin) 코딩 테스트 . 추억점수 https://school.programmers.co.kr/learn/courses/30/lessons/176963 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 문제 풀이 . 해쉬맵과 ContainsKey() 를 사용해서 풀었다. private fun solution( name: Array, yearning: IntArray, photo: Array ): IntArray { var answer: IntArray = intArrayOf() val hashMap = HashMap() name.forEachIndexed { in.. 더보기

반응형
LIST