728x90 반응형 분류 전체보기322 [Kotlin] 영역 함수 (run, let, with, apply, also) 코틀린에는 영역 함수라는 것이 존재한다. 영역 함수를 사용하면 특정 객체에 대한 식이라는 것을 알 수 있어서 가독성이 좋아진다. 영역 함수 모두 사용하는 목적은 비슷하지만 사용 방식에 있어서 약간의 차이점들이 존재한다. 객체 반환 여부에 따라서 구분해보자면 run, let, let과 apply, also로 나눌 수 있다. 먼저 영역 함수를 사용하지 않을 때와 사용할 때를 비교해보겠다. 사용하지 않을 때 class Student(){ var number = "" var name = "" fun printInfo(){ println("your number : $number your name : $name") } } val s = Student() s.number = "1234" s.name = "chulso.. 2022. 12. 21. [Kotlin] 고차 함수와 람다 함수 고차 함수란 함수를 인자로 받거나 함수로 반환하는 함수이다. 람다 함수의 다른 뜻은 익명 함수로 함수를 단순하게 표현할 수 있다. 불필요한 연산을 줄여 메모리를 아낄 수 있다는 장점이 있다. 이제 고차 함수의 인자로 람다 함수를 받는 방법을 공부해보려한다. 첫 번째와 두 번째 인자로 정수를 받고 세 번째 인자로 연산을 정의한 함수를 받으려고 한다. 세 번째 인자에 따라서 두 정수를 더하거나 빼거나 곱하는 함수를 만들어보려한다. fun calculate(a:Int,b:Int,op:(Int,Int)->Int){ println(op(a,b)) } 세 번째 인자의 경우 정수 두 개를 받아서 정수를 반환하는 형태이다. 이제 이를 사용하기 위해서는 calculate 함수를 호출할 때 세 번째 인자로 람다 함수를 주.. 2022. 12. 20. [Algorithm] 다익스트라 (Dijkstra algorithm), 벨만 포드(Bellman ford algorithm) 그래프에서 특정 노드에서 특정 노드까지 가는 최단 거리를 구하는 알고리즘에 대해서 공부해보려 한다. 다익스트라 알고리즘과 벨만 포드 알고리즘이 있는데 이 둘의 차이는 그래프의 가중치가 음수를 허용하냐 허용하지 않냐의 차이다. 이 둘의 차이점을 기준으로 공부해보려 한다. Dijkstra algorithm 다익스트라 알고리즘은 음의 가중치를 허용하지 않고 양의 가중치만 존재할 때 최단 거리를 구하는 알고리즘이다. 최단 거리를 알고있는 노드와 최단 거리를 모르고있는 노드로 나눈다. 최단 거리를 모르고 있는 노드의 최단거리를 알아내는 것을 반복하는 알고리즘이다. A를 선택하고 연결된 노드 B와 C를 비교한다. 먼저 가장 짧은 거리인 5만큼 떨어져있는 C의 최단 경로는 5라고 확정할 수 있다. 여기서 의문이 생길.. 2022. 12. 19. [Algorithm] KMP 알고리즘 (문자열 매칭 알고리즘) 문자열 알고리즘이란 어떤 문자열에서 원하는 패턴을 찾는 알고리즘이다. 문자열의 부분 문자열과 패턴을 비교하면서 패턴의 존재 여부를 알 수 있다. 예를 들어서 "banana"에서 "ana"라는 패턴을 찾고자한다면 "banana", "banana" 이렇게 총 두 개가 존재함을 알 수 있다. 그러나 모든 부분 문자열과 패턴을 비교한다면 엄청난 시간이 걸릴 것이다. 그래서 KMP 알고리즘을 사용하면 패턴 비교시간을 줄일 수 있다. KMP 알고리즘의 필요성 굉장히 긴 문자열이 존재하고 이 문자열에서 "abcac"라는 문자열을 찾고 싶다고하자. 패턴을 찾는 와중에 위와 같은 상황이 발생했다고 하자. abca까지는 맞았으나 그 다음 문자열에서 찾고있는 패턴이 아님을 알아냈다. 그럴 경우 패턴을 한 칸 옆으로 옮겨서 .. 2022. 12. 18. 이전 1 ··· 68 69 70 71 72 73 74 ··· 81 다음 728x90 반응형