Swift 초보의 구현이니, 가볍게 참고만 해주세요 😅 기존 구현 👨🏻💻 기존 Collection View의 Cell Size를 정의할 땐 UICollectionViewDelegateFlowLayout 프로토콜을 채택해 아래와 같이 구현을 했었다. func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { return CGSize(width: 100, height: 100) } 이게 무슨 문제가 될까? 위처럼 구현은 할 수 있으나 extension을 통해 프로토콜을 채택하고, 구현하기..
BOJ-3190, 뱀 문제 📑 https://www.acmicpc.net/problem/3190 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net 문제 정리 ▾ 보드의 크기는 N*N으로 N에 대한 입력을 받는다. 초기 뱀의 길이는 1이며, 뱀의 머리는 오른쪽을 향한다. 뱀은 1초에 1칸씩 움직이며 아래의 규칙이 적용된다. 뱀의 방향 전환으로는 D는 오른쪽으로 90도 회전, L은 왼쪽으로 90도 회전이다. 더보기 먼저 뱀은 몸 길이를 늘려 머리를 다음 칸에 위치시킨다. 만약 이동한 칸에 사과가 있다면, 그 칸에 있던 사..
BOJ-3085, 사탕 게임 문제 📑 https://www.acmicpc.net/problem/3085 3085번: 사탕 게임 예제 3의 경우 4번 행의 Y와 C를 바꾸면 사탕 네 개를 먹을 수 있다. www.acmicpc.net 문제 정리 ▾ 보드의 크기(N)을 입력 받는다. 각 행엔 C(빨간색), P(파란색), Z(초록색), Y(노란색)으로 된 문자열을 개행 입력 받는다. 보드에서 한 가지 사탕만을 최대로 먹기 위해 인접한 칸의 다른 사탕과 바꾸려고 한다. 이때 최대로 먹을 수 있는 사탕의 개수를 출력한다. 접근 🚶🏻 나의 생각 ▾ N의 최대 크기는 50으로 모든 경우를 따져볼 때 최대로 따지는 경우의 수는 50*50으로 브루트포스로 접근해도 무방할 거 같아 브루트포스로 구현해야겠다고 생각했다. 해당..
BOJ-1744, 수 묶기 문제 📑 https://www.acmicpc.net/problem/1744 1744번: 수 묶기 길이가 N인 수열이 주어졌을 때, 그 수열의 합을 구하려고 한다. 하지만, 그냥 그 수열의 합을 모두 더해서 구하는 것이 아니라, 수열의 두 수를 묶으려고 한다. 어떤 수를 묶으려고 할 때, 위치에 www.acmicpc.net 문제 정리 ▾ 수들의 개수를 입력받는다. 수들은 각각 개행으로 입력받는다. 각각의 수들을 둘씩 묶거나, 아니면 묶지 않아야 한다. 위 연산을 통해 입력받은 수들로 최댓값을 출력시킨다. 접근 🚶🏻 나의 생각 ▾ 이 문제는 케이스를 나누는 것이 중요하다고 생각했다. 케이스는 아래와 같이 나눌 수 있다. 양수일 때 (N > 1) 1일 때 음수일 때 (0 포함) 내 ..
BOJ-16953, A→B 문제 📑 https://www.acmicpc.net/problem/16953 16953번: A → B 첫째 줄에 A, B (1 ≤ A < B ≤ 109)가 주어진다. www.acmicpc.net 문제 정리 ▾ A, B를 입력받는다. 두 연산을 이용해 A를 B로 만드는데 필요한 연산의 최솟값을 구하면 된다. A가 B가 되기 위한 연산은 아래와 같다. 2를 곱한다. 1을 수의 가장 오른쪽에 추가한다. 접근 🚶🏻 나의 생각 ▾ 백트래킹으로 B를 A로 만드는 횟수를 카운팅 하려고 했다. 내 코드(시간 초과 코드) ▾ import Foundation func solution() { let tc = readLine()!.split(separator: " ").map{ Int(String(..
BOJ-1946, 신입 사원 문제 📑 https://www.acmicpc.net/problem/1946 1946번: 신입 사원 첫째 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 20)가 주어진다. 각 테스트 케이스의 첫째 줄에 지원자의 숫자 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개 줄에는 각각의 지원자의 서류심사 성 www.acmicpc.net 문제 정리 ▾ 테스트 케이스의 개수를 입력받는다. 지원자의 수를 입력받는다. 지원자는 서류심사 성적과 면접 성적의 순위를 각각 공백 기준으로 입력받는다. 다른 지원자들의 서류심사 성적과 면접 성적을 비교하여 다른 지원자들에 비해 두 성적 모두 낮을 경우 떨어진다. 해당 회사에 선발할 수 있는 신입사원의 최대 인원수를 출력한다. 접근 🚶🏻 ..
BOJ-1026, 보물 문제 📑 https://www.acmicpc.net/problem/1026 1026번: 보물 첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거 www.acmicpc.net 문제 정리 ▾ A,B의 길이를 정할 N의 정수를 입력 받는다. A와 B의 원소를 각각 곱해서 누적시킨 S를 출력시킨다. 단, S는 모든 케이스 중 최솟값으로 출력을 시켜야한다. A는 최솟값과 B는 최댓값을 곱하면 된다. B의 배열은 재정렬이 되어선 안된다. 접근 🚶🏻 나의 생각 ▾ 처음에 문제를 끝까지 안읽고 쉽다는 생각에 A와 B 배열 모두 재정렬하여 계산..
Firebase에서 제공하는 기능들을 제대로 알고자 정리를 해보았습니다. 현재 프로젝트하면서 쓰이는 메서드를 위주로 정리했습니다. 😁 참고: https://firebase.google.com/docs/database/ios/read-and-write?hl=ko Apple 플랫폼에서 데이터 읽기 및 쓰기 | Firebase Documentation Join Firebase at Google I/O online May 11-12, 2022. Register now 의견 보내기 Apple 플랫폼에서 데이터 읽기 및 쓰기 (선택사항) Firebase 로컬 에뮬레이터 도구 모음으로 프로토타입 제작 및 테스트 앱에서 실시간 firebase.google.com Firebase 데이터 관련 🥝 FIRDatabaseRe..
Protocol 🤷🏻♂️ https://docs.swift.org/swift-book/LanguageGuide/Protocols.html Protocols — The Swift Programming Language (Swift 5.6) Protocols A protocol defines a blueprint of methods, properties, and other requirements that suit a particular task or piece of functionality. The protocol can then be adopted by a class, structure, or enumeration to provide an actual implementation of tho docs.swi..
Swift 초보의 코드이므로, 참고만 해주시면 감사합니다 😅 NotificationCenter 📑 정의 ▾ Notification Center 그대로 번역하면 "등록된 관찰자에게 정보를 브로드캐스트 할 수 있도록 하는 알림 디스패치 메커니즘"이라고 합니다. 쉽게 말해 Notification이 오면 Observer Pattern(옵저버 패턴)을 통해서 등록된 옵저버들에게 Notification을 전달하기 위해 사용하는 클래스라고 보면 됩니다. 우리는 Notification도 들어봤을 텐데, Notification과 NotificationCenter 무슨 차이가 있는지는 아래 Notification에 대한 정의를 볼게요. Notification 그대로 번역하면 "등록된 모든 관찰자에게 알림 센터를 통해 방송..
@escaping 📑 About @escaping ▾ escaping을 접하다 ▾ func fetchUser(completion: @escaping(User) -> Void) { ... } 위의 코드처럼 통신이나 비동기 처리를 할 때 이러한 코드를 본 적이 있습니다. completion 클로저를 파라미터로 작성하면서 @escaping이 붙은 걸 보면서 어떨 때 사용하는지 느낌만 알고, 정확히 어떨 때 사용하며 무엇인지 몰랐습니다. 정의 ▾ Escaping Closure 클로저가 함수의 인자로 전달됐을 때, 함수의 실행이 종료된 후 실행되는 클로저입니다. Non-Escaping Closure 함수의 실행이 종료되기 전에 실행되는 클로저입니다. 비교하기 ▾ Non-Escaping Closure func fe..
SDWebImage 모듈 설치 에러 이슈 🤷🏻♂️ 평소 라이브러리 설치처럼 cocoapods를 이용해 SDWebImage 라이브러리를 설치했다. import SDWebImage를 하면 모듈을 찾을 수 없다는 에러문이 떴다. 나의 노력 ▾ 새로고침 워크스페이스 삭제 및 재설치 pod update SDWebImage 삭제 및 재설치 재부팅 해결책 📓 온갖 자료를 살펴보던 중 cocoapods에 라이브러리 선언에 코드를 추가해주었다. pod 'SDWebImage', :modular_headers => true 어떠한 이유인지는 모르겠지만 아래에 사이트를 참고해보면 좋을 것 같습니다. 저와 같은 에러가 뜬다면 당황하지 말고, 위에 코드로 podfile을 수정해보시길...🥲 참고 ▾ https://stackov..