[BFS] 백준: 유기농 배추(Swift)
·
코테
난이도: 실버2 사용 언어: Swift 카테고리: BFS https://www.acmicpc.net/problem/1012 Code struct Queue { var memory = [T]() var index = 0 var isEmpty: Bool { memory.count T { let v = memory[index] index += 1 return v } } let t = Int(readLine()!)! var results = [Int]() for _ in 0.. Int { let mnk = readLine()!.sp..
[DFS] 백준: 바이러스(Swift)
·
코테
난이도: 실버3 사용 언어: Swift 카테고리: DFS https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net code var n: Int = 0 var m: Int = 0 for i in 0..
[BFS] 백준: 단지번호붙이기(Swift)
·
코테
난이도: 실버1 사용 언어: Swift 카테고리: BFS https://www.acmicpc.net/problem/2667 code struct Queue { var memory = [T]() var index = 0 var isEmpty: Bool { memory.count T { let v = memory[index] index += 1 return v } } let n = Int(readLine()!)! var map = [[Int]]() var countArr = [Int]() for _ in 0.. Int { let..
[Swift] Protocol
·
Swift
Swift는 클래스를 이용한 추상화보단 구조체와 프로토콜을 통한 프로토콜을 권장한다. 프로토콜에 대해 프로토콜이란, 특정 역할을 수행하기 위한 메서드, 프로퍼티, 기타 요구사항 등의 청사진을 정의합니다. 구조체, 클래스, 열거형은 프로토콜을 채택할 수 있습니다. 프로토콜 내부에는 채택했을 시 꼭!!! 구현되어야만 하는 메서드, 프로퍼티, 이니셜라이저 등이 정의 및 제시되어 있습니다. 때문에, 프로토콜 스스로는 기능을 구현하지 않습니다. 프로토콜은 다른 프로토콜을 상속받을 수 있고, 또한 다중 상속도 가능합니다. 자식 프로토콜은 부모 프로토콜에 제시된 기능은 중복하여 써줄 필요 없습니다. 프로토콜 채택 시에는 ":"뒤에 프로토콜 이름을 작성하여 채택합니다. 클래스 상속과 같이 사용할 시에는 클래스를 먼저 ..
[Swift] 객체지향(OOP)
·
Swift
오늘 내용은 객체지향 패러다임과 객체지향의 특징인 일반화, 추상화, 은닉화, 캡슐화이다. 객체지향이 만들어진 이유는 프로그램을 만드는 이들이 세상을 프로그램으로 나타내려는 과정에서 만들어졌다. 때문에 우리가 사는 세상처럼 객체를 중심으로 서로 상호작용하며, 프로그램이 동작하게 된다. 그 과정에서 만들어진 일반화, 추상화, 은닉화, 캡슐화를 한 문장으로 정리하면, 일반화란, 공통된 특성 또는 행위를 묶어 놓은 것 추상화란, 객체를 나타냄에 있어 중요한 포인트만 추려내는 것 은닉화란, 외부로 보일 필요가 없거나, 그러면 안 되는 특성 또는 행위들을 숨겨놓은 것 캡슐화란, 숨겨진 특성 또는 행위를 외부에서 제어할 수 있도록 행위만을 제공해 주는 것 📝 타입을 정의할 때 구조체와 클래스가 사용되는데, 둘의 차이..
[Swift] 옵셔널 추출
·
Swift
지난 게시물에 옵셔널에 대한 글이 있는데 이번엔 그 글에 연장인 옵셔널 추출에 관한 이야기를 써볼까 한다. 그 당시엔 몰랐지만, 옵셔널 추출에 관해 찾아보면서 다양한 추출방법이 있었고, 오늘 글로 담지 못한 방법 또한, 많을것이라 생각이 든다. 오늘로 또 다시 한주가 시작 됐는데 이번주는 어떨까? Optional 추출은, 옵셔널 바인딩(Optional Binding) 옵셔널 체이닝(Optional Chaining) nil병합(Using the Nil-Coalescing Operator) 강제 언래핑(Unconditional Unwrapping) 사용하여 옵셔널 값을 일반 값으로 꺼내올 수 있다. 옵셔널 바인딩은, 값이 있을 때와 없을 때 상활을 각각 분리하여 값이 있을 때는 해당 값을 상수 또는 변수에 ..