구현해야하는 기능 → 특정 조건이 만족(아래 2가지 조건 True)이 되었을 때 닉네임 중복 체크 통과 → 해당 서버 API를 통해서 Bool 타입으로 값을 가져옴 텍스트 뷰 → Text가 있는지 Bool 타입으로 체크 기존 구현 didSet을 통해 닉네임 중복에 대한 변수 isCheckNickname(Bool type)과 UITextView의 Text가 있는지에 대한 변수 isFillTextView가 true인지 guard문을 통해 체크를 해주어, 둘 다 true일 경우에는 버튼이 활성화되게 구현해주었다. var isCheckNickname: Bool = false { didSet { guard isCheckNickname == true, isFillTextView == true else { // 버튼..
나의 구현 🐝 MVVM패턴을 적용했기 때문에 구현부는 ViewModel에서 이루어졌다. 매개변수로는 Struct를 정의해주어 해당 타입으로 Input을 만들어주었고, 반환 값도 Struct형식으로 바꾸는데 안에 요소는 Driver로 구현을 해주었다. View Model Input & Output // View Model /// Input struct RegularExpressionInput { var titleText: Observable } /// Output struct RegularExpressionOutput { var titleTextCheck: Driver } Input 구조체는 View Controller에서 rx.text로 바인딩을 해줄것이니 Observable타입으로 정의를 해준다. Ou..
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으로 브루트포스로 접근해도 무방할 거 같아 브루트포스로 구현해야겠다고 생각했다. 해당..
Issue 🤷🏻♂️ Status Bar 색상을 변경하는데 프로젝트 설정에서 Light Content로 설정을 했는데도 불구하고 변경이 되지 않았다. Solved 📝 여러 자료를 찾아본 끝에 해결을 할 수 있었다 😂 여러 방법들이 있었지만 서기의 해결방법은 아래와 같다. 반드시 아래 2가지를 모두 설정해야만 변경이 된다는 점 ❗️ 과정 ▾ Project 설정 바꾸기 가장 먼저 프로젝트 설정(General)에서 Status Bar Style을 Light Content로 설정해주었다. Info 설정 우선 프로젝트 설정을 하면 Status bar style 이라는 설정이 생기며 Value로는 Light Content가 생긴다. 그 아래가 중요하다 📌 View controller-based status bar ..
RxSwift 기초 문법 공부한 것을 정리하고자 만든 게시물입니다. 부족한 부분이 있다면 꼭 말씀해주세요 😁 이 게시물 역시 참고 용도로 가볍게 봐주시면 감사합니다 😏 RxSwift 기초 문법 🍎 Observable just just 정의로는 "Returns an observable sequence that contains a single element" 라고 되어있다. 해석하면 "단일 요소를 포함하는 관찰 가능한 시퀀스를 반환합니다" 라고 한다. 쉽게 말해 하나의 요소만 포함하는 Observable Sequence를 생성한다고 보면 된다. let observable = Observable.just(1) of of 정의로는 "This method creates a new Observable instanc..
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..