반응형

SWiFT 49

CocoaPods(코코아팟) 사용법(쉬움주의, 따라만해), Charts라이브러리 설치

안녕하세요 KataRN입니다. 오늘은 코코아팟에 대해 알려드리려고 합니다. 우선 코코아팟이란? "CocoaPods는 Swift 및 Objective-C 코코아 프로젝트의 종속성 관리자입니다. 80,000 개가 넘는 라이브러리를 가지고 있으며 300 만 개가 넘는 응용 프로그램(앱)에서 사용되고 있습니다. CocoaPod은 프로젝트를 우아하게 확장할 수 있도록 도와줍니다."라고 공홈(https://cocoapods.org/)에서 소개하고 있습니다. 사실 사용법도 간단하며 공홈에 잘 나와있습니다...만? 처음에 보면 이해가 안갑니다... 간단하게 설명드리겠습니다. 오픈 라이브러리를 사용하기 위해서입니다. 보통 오픈 라이브러리를 쓰면 작업시간도 줄고 코드의 가독성도 올릴 수 있고 등등 다양한 장점이 있어서 대..

NotificationCenter 다루기(쉬움주의, 따라만해)

안녕하세요. KataRN입니다. 오늘은 NotificationCenter에 대해서 알아보겠습니다. 혹시 데이터 전달을 위한 다른 방법을 원하시는 분은 아래글을 참고해주세요~ https://katarnios.tistory.com/28 화면 간 데이터전달하기(쉬움주의, 따라만해) 안녕하세요. KataRN입니다. (수정_220120) 2개의 글을 하나로 합쳤습니다. 오늘은 화면간의 데이터 전달에 대해서 알아보겠습니다. 화면에서 화면으로 이동할때 데이터를 전달하고 받는 방법입니다. katarnios.tistory.com NotificationCenter란? (직설적으로 기능으로 설명하겠습니다.) 화면A에 관찰자를 등록합니다. 그리고 관련이없는(관련이있어도됨) 화면B에서 등록된 관찰자에게 편지를 보냅니다. 그럼 ..

파이차트그리기(2) + UIBezierPath + 시간표그리기

let centerCircle = UIBezierPath(arcCenter: center, radius: 60, startAngle: 0, endAngle: (360 * .pi) / 180, clockwise: true) UIColor.gray.set() centerCircle.fill() 안녕하세요. KataRN입니다. 파이차트 그리기 이어서 진행하겠습니다. 앞에 내용도 중요하니 순서대로 글 읽어주시면 감사합니다.(조회수 +1 올려줘...) 파이차트 그리기(1) 링크 입니다. https://katarnios.tistory.com/19 파이차트그리기(1) + UIBezierPath + 도형그리기 안녕하세요. KataRN입니다. 오늘은 선긋는 방법부터 최종적으로 원그래프(파이차트)까지 그려보려고 합니다...

파이차트그리기(1) + UIBezierPath + 도형그리기

안녕하세요. KataRN입니다. 오늘은 선긋는 방법부터 최종적으로 원그래프(파이차트)까지 그려보려고 합니다. 원그래프는 보통 수량을 한눈에 보기위해 원을 이용해서 사용하며 도넛모양으로 생겼다고 하여 파이차트라고 부르나봅니다. 평소에 라이브러리갖다 쓰고 그랬는데 굳이 써야되나라는 생각이들어 직접 그려봤습니다. 혹시라도 굳이 그릴필요있나 라이브러리 쓰면되지라고 생각하시면 Charts 라이브러리를 사용하시기 바랍니다. https://github.com/danielgindi/Charts 아래 글은 라이브러리 'Charts'를 이용하여 그리는 방법을 다룬 글입니다. https://katarnios.tistory.com/24 우선 선분긋기부터 도형그리기까지 해봅시다. 우선 그래프를 그리기 위해서는 UIBezierP..

최단거리 구하기 <다익스트라(Dijkstra)>, <플로이드 워셜(Floyd Warshall)>

안녕하세요. KataRN입니다. 항상 글을 써야지... 써야지... 하면서 미루게 되네요.. 크흠... 오늘은 최단 거리를 구하는 알고리즘에 대해 써보려고 합니다. 저는 최단거리하면 6칸이면 aaa와bb로 나눠서 3! * 2! 했던 생각이 나네요... 하지만 이걸로는 풀수가 없었습니다... 흑흑... 자 우리는 이제 다음 단계로 넘어가봅시다. 우선 최단거리와 관련된 알고리즘이 2가지가 있습니다. 1. 다익스트라(Dijkstra) 2. 플로이드 워셜 알고리즘(Floyd Warshall Algorithm) 오늘은 2가지 모두 소개하려고합니다. 1. 다익스트라(Dijkstra)란? - 음의 가중치가 없는 그래프의 한 정점(頂點, Vertex)에서 모든 정점까지의 최단거리를 각각 구하는 알고리즘(최단 경로 문제..

DP(동적계획법)

안녕하세요. KataRN입니다. 오늘은 DP에 대해 알아보겠습니다. DP란 탈영병들을 잡는 병사들을 일컫는... 죄송합니다. DP(Dynamic Programming)란 ? 일반적으로 주어진 문제를 풀기 위해서, 문제를 여러 개의 하위 문제(subproblem)로 나누어 푼 다음, 그것을 결합하여 최종적인 목적에 도달하는 것이다. 각 하위 문제의 해결을 계산한 뒤, 그 해결책을 저장하여 후에 같은 하위 문제가 나왔을 경우 그것을 간단하게 해결할 수 있다. 이러한 방법으로 동적 계획법은 계산 횟수를 줄일 수 있다. 특히 이 방법은 하위 문제의 수가 기하급수적으로 증가할 때 유용하다. 출처 : 나무위키 핵심은 저장입니다. Memoization(메모이제이션)이라고 불리기도합니다. 동일한 계산을 반복해야할 때,..

DFS, BFS에 대해 알아봅시다.

안녕하세요. KataRN입니다. 오늘은 DFS, BFS에 대해 알아보겠습니다. DFS : Depth First Search(깊이 우선 탐색) weigh을 가지지 않는 방향 그래프에서 모든 경우를 구해볼 때 이 DFS를 사용됩니다. 예를 들면 1부터 N까지의 자연수 중 n개의 집합을 만들 수 있을 때, 가능한 모든 순열을 구해야 할 때 사용할 수 있습니다. 스택을 통해 구현하며, 재귀함수를 통해 구현합니다.(함수가 호출되면 스택 영역에 쌓이게 된다. 효율성이 떨어지는 이유) 코드로 확인해 볼게요. func practiceDFS(numbers: [Int], m: Int) { // 1. 궁극적으로 구하고자 하는 값. 재귀 함수의 외부에 선언되었다. 재귀 함수를 돌며 특정 기준에 만족할 경우 이 값을 변경할 것..

재귀함수, 꼬리재귀

안녕하세요. KataRN입니다. 여러분 재귀함수를 아시나요? 재귀함수... 어렵게 생겼지만 어렵지 않습니다. 재귀함수에 대한 이해를 돕기위해 우선 나무위키에서 퍼온 내용을 보시죠 어떻습니까? 멀티탭을 사용하기위해 멀티탭에 멀티탭코드를 꽂아서 사용하는... 멀티탭을 쓰기위해 멀티탭을 통해 전기를 가져오고 그 전기는 멀티탭에서 그 멀티탭의 전기는 멀티탭에서... 도르마무... 거래를 하러왔다... 하하..다시 이야기로 돌아가서 멀티탭을 사용하기 위해.. 도르마무... 죄송합니다. 다른 내용을 보도록하죠. 결과를 얻기위해 함수속에 함수(자신)을 넣는 것입니다. 가장 쉬운 예제는 팩토리얼입니다. 함수로 예를 들겠습니다. import Foundation func factorial(_ n : Int) -> Int ..

순열과 조합

안녕하세요 KataRN입니다. 묻지도 따지지도 않고 순열과 조합이 필요한 경우가 있습니다. 그래서 오늘은 순열과 조합에 대해 알아보려고 합니다. 들리는 소문에 의하면 파이썬은 기본제공이 있다던데... swift는? 네네 없습니다... 또 서론이 길다구요? 네 코드보시죠 우선 순열입니다. func permute(_ nums: [Int], _ targetNum: Int) -> [[Int]] { var result = [[Int]]() var visited = [Bool](repeating: false, count: nums.count) func permutation(_ nowPermute: [Int]) { if nowPermute.count == targetNum { result.append(nowPermu..

<Reduce>함수 더하기 추론(조금...)

안녕하세요. KataRN입니다. 오늘은 Reduce 함수에 대해 알아보겠습니다.(이번엔 추론도 더해서 알아보겠습니다.) reduce 번역하면 "줄이다, 감소하다" 입니다. 하지만 이 함수는 덧셈 함수라고 할 수 있습니다. 우선 애플 공식문서를 봅시다. reduce(_:_:) Applies a closure that collects each element of a stream and publishes a final result upon completion. Declaration func reduce(_ initialResult: T, _ nextPartialResult: @escaping (T, Self.Output) -> T) -> Publishers.Reduce Return Value A publish..

반응형