전체 글(228)
-
[UIKit] 테이블뷰 셀안에 있는 버튼 클릭 이벤트 처리하기 (자세히) -델리게이트 패턴
테이블뷰 클릭이벤트만들기 (참고) 더보기 2022.08.14 - [STUDY(스터디)/iOS] - [iOS/Swift] 테이블뷰 만들기 & 테이블뷰 셀 클릭이벤트 [iOS/Swift] 테이블뷰 만들기 & 테이블뷰 셀 클릭이벤트 스토리보드에 테이블뷰를 추가한다. 스토리보드의 테이블뷰를 뷰컨트롤러에 선언해준다 @IBOutlet weak var myTableView: UITableView! 테이블뷰셀을 만든다 새로운 파일 추가하여 Cocoa Touch Class에서 UITabl.. nlestory.tistory.com 테이블뷰셀에 있는 버튼 클릭이벤트 만들기 테이블뷰셀파일에서 IBAction을 만들어준다 셀을 클릭하면 뷰컨트롤러에서 설정해준 셀클릭이벤트 함수가 호출되고 버튼을 클릭하면 테이블뷰셀에서 설정해준 ..
2022.09.01 -
[UIKit] 카카오 (다음) 지도 API 마커추가하기
2022.08.14 - [STUDY(스터디)/iOS] - [iOS/Swift] 카카오 (다음) 지도 API 사용하기 [iOS/Swift] 카카오 (다음) 지도 API 사용하기 SDK 다운로드 https://apis.map.kakao.com/ios/guide/#step1 내 애플리케이션 추가하기 https://developers.kakao.com/console/app 카카오계정 로그인 여기를 눌러 링크를 확인하세요. accounts.kakao.com iOS추가.. nlestory.tistory.com var mapPoint: MTMapPoint? var poiItem: MTMapPOIItem? override func viewDidLoad() { super.viewDidLoad() configureLoca..
2022.08.31 -
[UIKit] Snapkit(스냅킷) 테이블뷰셀 오토레이아웃 (라벨길이에 따른 가변적 높이 설정)
🧸 시작 스냅킷라이브러리를 사용하여 테이블뷰셀을 만들어보았다. 테이블뷰 셀에 라벨이 있는 데 그 라벨의 텍스트 길이가 유동적으로 변경되는 식으로 진행했다. 그 때 텍스트가 잘리지 않게 오토레이아웃을 잡는 방법을 적용하였다. 🧸 테이블뷰 높이를 동적 할당 //MARK: - 테이블뷰 관련 extension SearchViewController: UITableViewDelegate, UITableViewDataSource { func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return 10 } func tableView(_ tableView: UITableView, cellForRowAt indexPath..
2022.08.25 -
[알고리즘 기초] 동적계획법(DP)
동적계획법 (Dynamic Programming) 문제를 쪼개서 작은 문제의 답을 구하고 그걸로 더 큰 문제의 답을 구하는 것을 반복 1) 정의 : DP함수의 정의 2) 구하는 답 : 문제에서 요구하는 정답 (출력값) 3) 초기값 : DP함수의 초기값 4) 점화식 : DP함수의 점화식 피보나치 수열 1) 정의 : f(i) : i번째 피보나치 수 2) 구하는 답 : f(n) 3) 초기값 : f(0) = 0 f(1) = 1 4) 점화식 : f(i) = f(i-2) + f(i-1) if i >= 2 1) Bottom-up 방식으로 구현 : 반복문 let input = Int(readLine()!)! var arr = [Int]() arr.append(0) arr.append(1) for i in 2...90 ..
2022.08.24 -
[알고리즘] Swift -백준 # 2748 (피보나치 수2) -DP
문제링크 https://www.acmicpc.net/problem/2748 2748번: 피보나치 수 2 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 문제 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 된다. n=17일때 까지 피보나치 수를 써보면 다음과 같다. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55..
2022.08.24 -
[알고리즘] Swift -백준 # 1743 (음식물 피하기) -DFS
문제링크 https://www.acmicpc.net/problem/1743 1743번: 음식물 피하기 첫째 줄에 통로의 세로 길이 N(1 ≤ N ≤ 100)과 가로 길이 M(1 ≤ M ≤ 100) 그리고 음식물 쓰레기의 개수 K(1 ≤ K ≤ N×M)이 주어진다. 그리고 다음 K개의 줄에 음식물이 떨어진 좌표 (r, c)가 주어진다 www.acmicpc.net 문제 코레스코 콘도미니엄 8층은 학생들이 3끼의 식사를 해결하는 공간이다. 그러나 몇몇 비양심적인 학생들의 만행으로 음식물이 통로 중간 중간에 떨어져 있다. 이러한 음식물들은 근처에 있는 것끼리 뭉치게 돼서 큰 음식물 쓰레기가 된다. 이 문제를 출제한 선생님은 개인적으로 이러한 음식물을 실내화에 묻히는 것을 정말 진정으로 싫어한다. 참고로 우리가 ..
2022.08.21 -
[알고리즘] Swift -백준 #11724 (연결 요소의 개수) -DFS
문제링크 https://www.acmicpc.net/problem/11724 11724번: 연결 요소의 개수 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주 www.acmicpc.net 문제 방향 없는 그래프가 주어졌을 때, 연결 요소 (Connected Component)의 개수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u..
2022.08.20 -
[알고리즘] Swift -백준 #10951 (A+B -4)
문제링크 https://www.acmicpc.net/problem/10951 문제 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 입력 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10) 출력 각 테스트 케이스마다 A+B를 출력한다. 풀이 과정 정수를 입력받고 합을 출력한다 테스트케이스 개수가 정해지지 않아 계속 입력받는다 입력이 주어지지 않으면 반복문을 끝낸다. 처음에 xcode에서 실행했을 때 인덱스 오류가 난다 그래서 틀린 줄 알았는 데 백준에서 제출하니 맞았다는 결과가 나왔다. 아니 틀린 줄 알고 찾아봤네... 풀이 while let input = readLine()..
2022.08.20 -
[알고리즘 기초] 그래프, DFS/BFS/백트래킹, 길찾기문제 예시
👉 그래프 정점과 정점간의 관계를 표시하는 간선으로 구성된 자료 ex) 지하철 노선의 최단 경로 (지하철역 = 정점) 👉 그래프 구성요소 1) 정점 (Node, Vertex) 2) 간선 (Edge) 👉 그래프 관련 용어 1) 방향 방향 그래프 무방향 그래프 (=양방향 그래프) 2) 순환 (cycle) 순환 그래프 비순환 그래프 → 어디에도 사이클이 하나라도 있으면 순환그래프 방향성 비순환 그래프 (DAG)→ 과거에서 미래로 계속 진행하기에 방향성 → 미래에서 과거로 갈 수 없기에 비순환 ex) 블록체인, 깃허브브랜치 3) 연결요소 1개 안에 있는 노드들은 서로 이동가능 👉 코드로 그래프 나타내는 방법 1) 인접행렬 검색 속도가 빠르다 O(1) 2) 인접리스트 차지하는 메모리가 적음 시간복잡도 O(n) 간..
2022.08.20 -
[알고리즘] Swift -백준 #1182 (부분수열의 합) -조합/브루트포스/백트래킹
문제링크 https://www.acmicpc.net/problem/1182 1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net 문제 N개의 정수로 이루어진 수열이 있을 때, 크기가 양수인 부분수열 중에서 그 수열의 원소를 다 더한 값이 S가 되는 경우의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의..
2022.08.20 -
[UIKit] SwiftUI Preview 맛보기
#if DEBUG import SwiftUI struct ViewControllerRepresentable: UIViewControllerRepresentable { func updateUIViewController(_ uiView: UIViewController,context: Context) { // leave this empty } @available(iOS 13.0.0, *) func makeUIViewController(context: Context) -> UIViewController{ HomeVC() } } @available(iOS 13.0, *) struct ViewControllerRepresentable_PreviewProvider: PreviewProvider { static var..
2022.08.14 -
[UIKit] 스토리보드 없는 프로젝트 세팅
프로젝트 생성 Main Interface 부분 삭제 version 14.2 Main 스토리보드 삭제 Info.plist 파일에서 스토리보드 삭제 메인 VC 설정 SceneDelegate 파일에 가서 설정한다 func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { //윈도우 씬을 가져온다 guard let windowScene = (scene as? UIWindowScene) else { return } //윈도우 크기 설정 window = UIWindow(frame: UIScreen.main.bounds) //뷰컨트롤러 인스턴스 생성 le..
2022.08.14 -
[UIKit] 카카오 (다음) 지도 API 사용하기(2)
자신의 위치를 위도와 경로로 받아서 지도의 가운데로 설정 mapView.setMapCenter(MTMapPoint(geoCoord: MTMapPointGeo(latitude: 37.456518177069526, longitude: 126.70531256589555)), zoomLevel: 1, animated: true)
2022.08.14 -
[UIKit] 카카오 (다음) 지도 API 사용하기
SDK 다운로드 https://apis.map.kakao.com/ios/guide/#step1 내 애플리케이션 추가하기 https://developers.kakao.com/console/app 카카오계정 로그인 여기를 눌러 링크를 확인하세요. accounts.kakao.com iOS추가하고 BundleID 입력 나의 번들아이디는 처음 프로젝트를 생성할 때 정하고 General 가면 확인할 수 있다. 이거랑 카카오 애플리케이션에서 번들아이디를 같게 적어줘야한다 카카오 네이티브앱키 입력 위에서 다운받은 SDK파일을 압축을 풀고 lib 폴더로 들어가서 DaumMap.embeddedframework 파일을 내 xcode프로젝트에 복사한다 다음지도프레임워크가 사용하는 프레임워크들을 추가해줘야한다 - OpenGLE..
2022.08.14 -
[Design Pattern] 디자인패턴 -Delegate Pattern (델리게이트 패턴)
🧸 Delegate Pattern (델리게이트 패턴) 이란? 사전적의미는 '위임하다'라는 뜻이다. 즉 위임자를 갖고 객체가 다른 객체에게 자신의 일을 위임하는 형태의 디자인 패턴이다. 🧸 이벤트를 전달하는 방식 만약에 A뷰컨트롤러에서 B뷰컨트롤러로 이동할 때 A에서 B로 이벤트를 전달하는 방식은 쉽지만 반대로 B에서 A로 전달할 때에 Delegate패턴을 사용한다. Delegate는 Protocol 과 쌍으로 사용한다. B에서 이벤트가 발생했을 때 A가 알 수 있게 전달해주는 것이고 A는 그것을 Protocol로써 알 수 있는 것이다. ✔️ 사용예시 1 첫번째VC에서 두번째VC를 띄우고 두번째VC를 dismiss 했을 경우 두번째VC데이터를 첫번째VC로 가져온다 더보기 2022.09.01 - [STUDY..
2022.08.14 -
[UIKit] 테이블뷰 만들기 & 테이블뷰 셀 클릭이벤트
스토리보드에 테이블뷰를 추가한다. 스토리보드의 테이블뷰를 뷰컨트롤러에 선언해준다 @IBOutlet weak var myTableView: UITableView! 테이블뷰셀을 만든다 새로운 파일 추가하여 Cocoa Touch Class에서 UITableViewCell 파일을 선택하여 XIB파일도 함께 생성해준다. 테이블뷰셀을 꾸민다 오른쪽 인스펙터 화면에서 identifier 이름을 설정해준다 (헷갈리지않게 파일이름과 똑같이 만들어준다) 뷰컨트롤러에서 테이블뷰를 연결한다 class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { @IBOutlet weak var myTableView: UITableView! ove..
2022.08.14 -
[알고리즘] Swift -백준 #14235 (크리스마스 선물)
문제링크 https://www.acmicpc.net/problem/14235 14235번: 크리스마스 선물 크리스마스에는 산타가 착한 아이들에게 선물을 나눠준다. 올해도 산타는 선물을 나눠주기 위해 많은 노력을 하고 있는데, 전세계를 돌아댕기며 착한 아이들에게 선물을 나눠줄 것이다. 하지만 www.acmicpc.net 문제 크리스마스에는 산타가 착한 아이들에게 선물을 나눠준다. 올해도 산타는 선물을 나눠주기 위해 많은 노력을 하고 있는데, 전세계를 돌아댕기며 착한 아이들에게 선물을 나눠줄 것이다. 하지만 산타의 썰매는 그렇게 크지 않기 때문에, 세계 곳곳에 거점들을 세워 그 곳을 방문하며 선물을 충전해 나갈 것이다. 또한, 착한 아이들을 만날 때마다 자신이 들고있는 가장 가치가 큰 선물 하나를 선물해 줄..
2022.08.14 -
[알고리즘] Swift -백준 #1935 (후위 표기식2)
문제링크 https://www.acmicpc.net/problem/1935 1935번: 후위 표기식2 첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식이 주어진다. (여기서 피연산자는 A~Z의 영대문자이며, A부터 순서대로 N개의 영대문자만이 사용되며, 길이 www.acmicpc.net 문제 후위 표기식과 각 피연산자에 대응하는 값들이 주어져 있을 때, 그 식을 계산하는 프로그램을 작성하시오. 입력 첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식이 주어진다. (여기서 피연산자는 A~Z의 영대문자이며, A부터 순서대로 N개의 영대문자만이 사용되며, 길이는 100을 넘지 않는다) 그리고 셋째 줄부터 N+2번째 줄까지는..
2022.08.14 -
[알고리즘] Swift -백준 #5397 (키로거)
문제링크 https://www.acmicpc.net/problem/5397 5397번: 키로거 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한줄로 이루어져 있고, 강산이가 입력한 순서대로 길이가 L인 문자열이 주어진다. (1 ≤ L ≤ 1,000,000) 강산이가 백스페이스를 입 www.acmicpc.net 문제 창영이는 강산이의 비밀번호를 훔치기 위해서 강산이가 사용하는 컴퓨터에 키로거를 설치했다. 며칠을 기다린 끝에 창영이는 강산이가 비밀번호 창에 입력하는 글자를 얻어냈다. 키로거는 사용자가 키보드를 누른 명령을 모두 기록한다. 따라서, 강산이가 비밀번호를 입력할 때, 화살표나 백스페이스를 입력해도 정확한 비밀번호를 알아낼 수 있다. 강산이가 비밀번호 창에서 입력한 키가 주어졌을 ..
2022.08.14 -
[알고리즘] Swift -백준 #13417 (카드 문자열)
문제링크 https://www.acmicpc.net/problem/13417 13417번: 카드 문자열 입력 데이터는 표준 입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫째 줄에 테스트 케이스의 개수를 나타내는 자연수 T가 주어진다. 각각의 테스트 케이스의 첫째 줄에 처 www.acmicpc.net 문제 N장의 카드가 일렬로 놓여있다. 각 카드에는 알파벳이 하나씩 적혀있다. 태욱이는 가장 왼쪽에 있는 카드부터 차례대로 한 장씩 가져올 수 있다. 가장 처음에 가져온 카드는 자신의 앞에 놓는다. 그다음부터는 가져온 카드를 자신의 앞에 놓인 카드들의 가장 왼쪽, 또는 가장 오른쪽에 놓는다. 태욱이는 모든 카드를 다 가져온 후에 자신의 앞에 놓인 카드를 순서대로 이어 붙여 카드 문자열을 만..
2022.08.13