본문 바로가기

분류 전체보기282

[Swift] Chapter 21. 익스텐션 21.1 익스텐션이란 구조체, 클래스, 열거형, 프로토콜 타입에 새로운 기능을 추가할 수 있다. 기능을 추가하려는 타입을 구현한 소스 코드를 알지 못하거나 볼 수 없다 해도, 타입만 안다면 그 타입의 기능을 확장할 수도 있다. 스위프트의 익스텐션이 타입에 추가할 수 있는 기능은 다음과 같다. 연산 타입 프로퍼티 / 연산 인스턴스 프로퍼티 타입 메서드 / 인스턴스 메서드 이니셜라이저 서브스크립트 중첩 타입 특정 프로토콜을 준수할 수 있도록 기능 추가 익스텐션은 타입에 새로운 기능을 추가할 수는 있지만, 기존에 존재하는 기능을 재정의할 수는 없다. 클래스의 상속과 익스텐션을 비교해보자. 클래스의 상속은 클래스 타입에서만 가능하지만 익스텐션은 구조체, 클래스, 프로토콜 등에 적용이 가능하다. 또, 클래스의 상.. 2021. 10. 11.
[Swift] Chapter 20. 프로토콜 20.1 프로포콜이란 프로토콜은 특정 역할을 하기 위한 메서드, 프로퍼티, 기타 요구사항 등의 청사진을 정의한다. 어떤 프로토콜의 요구사항을 모두 따르는 타입은 '해당 프로토콜을 준수한다'고 표현한다. 타입에서 프로토콜의 요구사항을 충족시키려면 프로토콜이 제시하는 청사진의 기능을 모두 구현해야 한다. 즉, 프로토콜은 정의를 하고 제시를 할 뿐이지 스스로 기능을 구현하지는 않는다. 20.2 프로토콜 채택 protocol 키워드를 사용하여 정의한다. protocol 프로토콜 이름 { 프로토콜 정의 } 구조체, 클래스, 열거형 등에서 프로토콜을 채택하려면 타입 이름 뒤에 콜론(:)을 붙여준 후 채택할 프로토콜 이름을 쉼표(,)로 구분하여 명시해준다. /* 코드 20-1. 타입의 프로토콜 채택 */ struct.. 2021. 10. 11.
[고득점 Kit (완전탐색)] 카펫 (swift) 코딩테스트 연습 - 카펫 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 programmers.co.kr 풀이 먼저 갈색 격자의 수에서 모서리에 있는 4개를 제거해준다. (갈색 격자의 수 - 4)는 (노란색 격자의 가로 길이 * 2) + (노란색 격자의 세로 길이 * 2)가 된다. 그럼 이제 for문을 돌면서 노란색 격자의 가로 길이와 세로 길이를 구한다. 문제에서 카펫의 가로 길이가 세로 길이보다 길거나 같다고 했으므로 항상 가로 길이 > 세로 길이임을 알 수 있다. 위의 그림은 노란색 격자가 총 24개 있는 상태다. for문을 돌 때 노란색 격자 개수의 제곱.. 2021. 10. 11.
[고득점 Kit (완전 탐색)] 소수 찾기 (swift) 코딩테스트 연습 - 소수 찾기 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 programmers.co.kr 풀이 먼저 입력 받은 numbers 문자열을 Int형 배열로 만들어준다. let intArray: [Int] = numbers.map { Int(String($0)) ?? 0 } 순열을 이용해서 만들어 낼 수 있는 모든 숫자 조합을 찾은 후에 각각의 숫자를 소수인지 판별하여 셋에 저장한 후에 마지막에 셋에 있는 숫자의 개수를 카운트한다. 코드 import Foundation var res: Set = [] func isPrime(_ num: Int.. 2021. 10. 11.
[Swift] Chapter 19. 타입캐스팅 스위프트는 데이터 타입 안전을 위하여 각기 다른 타입끼리의 값 교환을 엄격히 제한한다. 또, 다른 프로그래밍 언어에서 대부분 지원하는 암시적 데이터 타입 변환은 지원하지 않는다. 19.1 기존 언어의 타입 변환과 스위프트의 타입 변환 먼저 [코드 19-1]에서 C언어와 스위프트의 데이터 타입 변환을 살펴보자. /* 코드 19-1. C언어와 스위프트의 데이터 타입 변환 비교 */ // C 언어 double value = 3.3 int convertedValue = (int)value convertedValue = 5.5 // double -> int 암시적 데이터 타입 변환 // 스위프트 var value: Double = 3.3 var convertedValue: Int = Int(value) conve.. 2021. 10. 11.
[고득점 Kit (완전탐색)] 모의고사 (swift) 코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 programmers.co.kr 풀이 각각의 수포자의 정답 패턴을 배열에 담아둔다. answers 배열을 for문으로 돌면서 각각의 수포자가 정답을 맞췄는지 체크 후에 가장 많은 문제를 맞힌 사람을 체크하여 res 배열에 담아 return 해준다. 코드 import Foundation var first: [Int] = [1, 2, 3, 4, 5] var second: [Int] = [2, 1, 2, 3, 2, 4, 2, 5] var third: [Int] = [3, 3, 1, 1, 2, 2, .. 2021. 10. 11.