본문 바로가기
반응형

분류 전체보기109

[Algorithm/BOJ] 9466 - 텀 프로젝트 Swift 문제 풀이: 텀 프로젝트를 위한 팀을 만들면서 원하는 팀원을 각자 고른다. 여기서 중요한건 DFS를 이용해서 Cycle을 확인해야 하는 것이다. 위 표에서 4 -> 7 -> 6 -> 4와 같은 Cycle을 확인할 수 있고 4, 6, 7은 같은 팀이 된다. 3번은 자기 자신을 선택했으므로 1번과 5번은 3번을 선택했지만 팀을 이룰 수 없고 3번 혼자 팀이 된다. 그리고 전체 인원에서 팀이 된 모든 번호의 개수를 제외하면 팀을 이루지 못한 인원의 수가 나와 답이 된다. 코드: func dfs( _ num: Int, _ nums: [Int], _ check: inout [Bool], _ team: inout [Int], _ teams: inout [[Int]] ) { check[num] = true team... 2021. 6. 17.
[Algorithm/BOJ] 6593 - 상범 빌딩 Swift 문제 풀이: 빌딩이 정육면체이므로 동서남북상하로 BFS를 돌려서 이동하는 시간을 구해야 한다. BFS를 쓸 줄 안다면 쉽게 해결할 수 있는 문제이다. 코드: typealias Coord = (l: Int, r: Int, c: Int) let d: [Coord] = [(-1,0,0), (1,0,0), (0,-1,0), (0,1,0), (0,0,-1), (0,0,1)] func bfs( _ start: Coord, _ exit: Coord, _ check: inout [[[Int]]], _ building: [[[String]]], _ b: Coord ) { var q = [Coord]() q.append(start) check[start.l][start.r][start.c] = 1 var index = 0.. 2021. 6. 17.
[Swift] split vs components String을 분리하는 함수 split과 components의 차이에 관해 기록합니다. split func split(separator: Character, maxSplits: Int = Int.max, omittingEmptySubsequences: Bool = true) -> [Substring] separator: 문자열을 분리하려는 문자 기준 maxSplits: 문자열을 분리하는 횟수 omittingEmptySubsequences: 빈 시퀀스의 포함 유무 return type: [Substring] time Complextiy: O(n), n은 Collection의 길이 예제: let str = "Hello Swift" let arr = str.split(separator: " ") // ["He.. 2021. 6. 5.
[Algorithm/BOJ] 1431 - 시리얼 번호 Swift Python 문제 풀이: A와 B의 길이가 다르면, 짧은 것이 먼저 온다. 만약 서로 길이가 같다면, A의 모든 자리수의 합과 B의 모든 자리수의 합을 비교해서 작은 합을 가지는 것이 먼저온다. (숫자인 것만 더한다) 만약 1,2번 둘 조건으로도 비교할 수 없으면, 사전순으로 비교한다. 숫자가 알파벳보다 사전순으로 작다. 문제에 명시된데로 정렬하면 된다. 2번에서 Int로 캐스팅되는 것만 더해서 비교하는 것만 따로 구현해준다. 코드: Swift var serials = [String]() for _ in 0 .. Int { let str = Array(s).map { Strin.. 2021. 6. 3.
[Algorithm/BOJ] 14500 - 테트로미노 Swift Python 문제 풀이: 모든 도형을 일일이 회전하고 싶지 않아서 고민을 하다가 인터넷에서 접근 방법만 확인하고 풀었다. ㅜ, ㅏ, ㅗ, ㅓ를 제외한 모든 도형은 dfs로 해결할 수 있다는 것을 깨달았다. ㅜ 형태의 테트로미노는 (0,0)을 기준으로 다음 그림과 같이 만들 수 있다. 한 좌표를 기준으로 dfs로 ㅜ형태의 테트로미노를 제외한 모든 도형의 최댓값을 갱신하고 ㅜ형태의 테트로미노를 따로 계산하여 최댓값을 갱신하면 된다. 코드: Swift typealias Coord = (r: Int, c: Int) let nm = readLine()!.split(separator: " ").map { Int(String($0))! } let n = nm[0] let m = nm[1] var paper = [[Int]]() .. 2021. 6. 2.
[iOS] UIView & CALayer UIView와 CALayer에 관한 내용을 기록합니다. UIView 화면에서 직사각형 영역에 대한 content를 관리하는 객체이다. class UIView: UIResponder UIView 객체는 직사각형 영역 내 content를 만들고 content와의 상호작용을 처리한다. 앱이 사용자와 상호작용하는 주된 방식이므로 다음과 같은 여러 가지 역할이 있다. Drawing and animation UIkit 또는 Core Graphics를 사용해서 직사각형 영역에 content를 그린다. 일부 프로퍼티를 애니메이션화할 수 있다. Layout and subview management 0 또는 그 이상의 subview를 갖고 있다. subview의 위치와 크기를 조정할 수 있다. 뷰의 우선순위에 따라 크기와.. 2021. 6. 1.
[iOS] Notification Center NotificationCenter & Notification에 관해 기록합니다. NotificationCenter 등록된 observer에게 동시에 Notification을 전달하는 클래스이다. Notification 클래스는 Notification을 발송하면 NotificationCenter에서 메시지를 전달한 observer가 처리될 때까지 대기한다. → 동기적(synchronous)인 흐름 Notification을 비동기적으로 사용하라면 NotificationQueue를 사용한다. Getting the Default NotificationCenter class var `default`: NotificationCenter 애플리케이션의 기본 Notification Adding and Removing .. 2021. 5. 27.
[iOS] Foundation Foundation Framework에 관한 내용을 기록합니다. Foundation Framework Access essential data types, collections, and operating-system services to define the base layer of functionality for your app. 원시 데이터 타입(Int, Double, String), 컬렉션 타입(Array, Dictionary, Set) 및 운영체제 서비스에 접근하여 데이터 저장 및 지속성, 텍스트 처리, 날짜 및 시간 계산, 정렬 및 필터링, 네트워킹을 포함한 앱의 기본 기능을 관리하는 프레엠워크이다. 코코아 터치 프레임워크에 포함된 프레임워크이다. 앱의 기본 층을 구성하는 필수적인 데이터 타입, c.. 2021. 5. 22.
[Swift] Optional Swift의 특징 중 하나인 안정성의 중요한 요소인 Optional에 대한 내용을 기록합니다. Optional (옵셔널) 값이 있을 수도 없을 수도 있음을 나타내는 표현이다. nil로 반환해서 오류가 있음을 알리거나 매개변수를 굳이 넘기지 않아도 된다는 뜻으로 매개변수의 타입을 옵셔널로 정의할 수 있다. nil은 옵셔널로 선언된 곳에서만 사용할 수 있다. -> 옵셔널이 선언된 변수와 아닌 변수를 아예 다른 타입으로 인식해서 옵셔널이 아닌 변수에 nil이 할당되면 컴파일할 때 바로 오류가 발생한다. 옵셔널은 제네릭이 적용된 열거형으로 구현되어 있다. public enum Optional: ExpressibleByNilLiteral { case none case some(Wrapped) @_transpare.. 2021. 5. 22.
[Algorithm/BOJ] 4889 - 안정적인 문자열 Swift Python 문제풀이: 문제에서 말하는 안정적인 배열로 만드는 연산 횟수를 구하면 된다. 스택을 사용해서 "}" -> "{"로 바꾸고 연산 횟수를 증가시키고 반대로 "{" -> "}"로 바꾸는 연산 횟수는 연산 처리후 스택에 남아 있는 개수의 절반이 곧 연산 횟수가 된다. why? 스택에 "{{{{"가 남아 있을 때 "{}{}"처럼 2번만 바꿔주면 안정적인 배열이 된다. "-"가 나오면 반복문을 빠져 나온다. 코드: Swift var index = 0 while true { let data = Array(readLine()!) if data.first == "-" { break } var stack = [Character]() var cnt = 0 for d in data { if d == "{" { stack.ap.. 2021. 5. 21.
반응형