일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- concurrency
- 개발
- xcodecloud
- iOS 개발자
- iOS 13.0+
- Git
- Alamofire
- IOS
- 정규표현식
- Navigation
- network
- ios18
- Tuist
- Firebase
- navigationsplitview
- tuist #xcodecloud #ios #ci/cd #swiftlint #firebase
- combine
- test
- github
- xcode
- composablearchitecture
- 모바일
- regex
- TCA
- swiftdata
- SWIFTUI
- SWIFT
- ObjC
- UI
- uikit
- Today
- Total
목록코딩테스트 (5)
iOS 개발 기록
문제 설명 알고리즘 풀이에 사용한 알고리즘의 의사코드. n의 범위가 1 이상, 10 이하이기 때문에 차량 시간대 별로 인원을 정리해두면 반복문을 10번만 돌려도 값을 구할 수 있었다. 첫번째 코드 import Foundation func solution(_ n:Int, _ t:Int, _ m:Int, _ timetable:[String]) -> String { // 1. 차량 구하기 var busTime = [Date]() for i in 1...n { busTime.append(busTimeTable(i, t)) } // -> 막차보다 늦는 인원 자르고 계산 var times = [Date]() timetable.forEach { if busTime.last! >= convertDate($0) { ti..
func solution(_ record:[String]) -> [String] { var nickname = [String : String]() var result = [String]() enum printScript: String { case Enter = "님이 들어왔습니다." case Leave = "님이 나갔습니다." } let recordAry = record.map{ $0 } // 닉네임 Dic 업데이트 recordAry.forEach{ let sen = $0.components(separatedBy: " ") if sen.count == 3 { nickname.updateValue(sen[2], forKey: sen[1]) } } // record 순서대로 메세지 출력 recordAry.f..
처음에 문제를 읽고 바로 파악하기 쉽지 않았고, 출력 예제를 보고나서야 어떤 문제인지 파악할 수 있었다. 주어지는 응답완료시간과 처리시간을 가지고 시작 시간을 구해야 한다. 주어지는 로그의 배열이 응답 완료 시간을 기준으로 정렬되어 있기 때문에 해당 로그의 시작 시간이 전의 로그의 끝나는 시간보다 빠르다면 작업 처리 요청이 무조건 겹친다고 볼 수 있다. 예를 들어 S4의 경우 S3보다 끝나는 시간이 늦지만 시작 시간이 (end + 1s) 이내이기 때문에 겹친다고 볼 수 있지만 S3는 시작 시간이 (end+1s) 보다 늦기 때문에 포함시킬 수 없다. import Foundation func solution(_ lines:[String]) -> Int { if lines.count == 1 { return ..
최단 경로 그래프 탐색 문제 처음에는 그래프 탐색 문제이길래 DFS로 풀어보려 했다. Code. 1 import Foundation let NM = readLine()?.components(separatedBy: " ").map{ Int(String($0))! } let n = NM![0] let m = NM![1] var maps = [[Int]]() var current = [0, 0] var result = m*m// 나올 수 있는 최대값 for i in 0..= 0 && next[1] = 0 else { continue } guard maps[next[1]][next[0]] == 1 else { continue } DFS(next, count+1, visited + [..
아이디어는 바로 떠올랐다. 앞에서부터 현재 수와 다음 수를 비교하여 작다면 현재 수를 제거하는 식으로 풀면 될 것 같았다. Code. 1 import Foundation func solution(_ number:String, _ k:Int) -> String { var numAry = number.map{ String($0) } let numCount = number.count - k var i = 0 while numAry.count != numCount { // 배열 끝까지 탐색하면 뒤에서부터 제거 if i >= numAry.count-1 { numAry.removeLast() } else if numAry[i] == "9" {// 해당 수가 9일 경우 다음으로 넘어감 i += 1 } else { i..