123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778import java.util.Scanner; class Main{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); String input = sc.next(); int count = 0; int length = input.length(); if(input.contains("c=")){ input = input.replace("c=", ":"); int n..
[시작] - 구조체, 클래스, 열거형, 프로토콜 타입에 새로운 기능을 추가할 수 있음 - 타입만 안다면 해당 타입의 기능을 확장할 수 있음- 익스텐션이 타입에 추가할 수 있는 기능들 : 연산 타입 프로퍼티 / 연산 인스턴스 프로퍼티 : 타입 메서드 / 인스턴스 메서드 : 이니셜라이저 : 서브스크립트 : 중첩 타입 : 특정 프로토콜을 준수할 수 있도록 기능 추가- 기존에 존재하는 기능을 재정의할 수는 없음- 외부에서 가져온 타입에 내가 원하는 기능을 추가하고자 할 때 사용 [상속과 익스텐션 비교] 상속 익스텐션 확장 수직 확장 (특정 타입을 물려받아 하나의 새로운 타입을 정의하고 추가 기능을 구현) 수평 확장 (기존의 타입에 기능을 추가) 사용 클래스 모든 타입 재졍의 가능 불가능 [문법] - 일반 123..
123456789101112131415161718192021222324252627282930func heapify(array: inout [Int], index: Int, size: Int){ var largest: Int = index let leftIndex = index * 2 + 1 let rightIndex = index * 2 + 2 if(leftIndex array[largest]){ largest = leftIndex } if(rightIndex array[largest]){ largest = rightIndex } if(largest != index){ let temp = array[largest] array[largest] = array[index] array[index] = temp ..
1234567891011func insertionSort(array: inout [Int]){ for i in 1 ..= 0 && array[index] >= temp){ array[index+1] = array[index] index -= 1 } array[index+1] = temp }}Colored by Color Scriptercs 시작할 때 맨 앞의 요소는 정렬된 것으로 간주하고, 나머지는 정렬되지 않은 것으로 간주한다. 정렬되지 않은 요소를 차례로 탐색하여 정렬된 요소 가운데 적절한 위치에 삽입한다.
1234567891011func bubbleSort(array: inout [Int]){ for i in stride(from: array.count - 1, through: 0, by: -1){ for j in 0 ..= array[j+1]){ let temp = array[j+1] array[j+1] = array[j] array[j] = temp } } }}Colored by Color Scriptercs 서로 인접한 요소를 비교, 정렬하여 마지막 요소부터 배열 중 가장 큰 값이 들어가게 한다.
[프로토콜이란] - 프로토콜 Protocol : 특정 역할을 하기 위한 메서드, 프로퍼티, 기타 요구사항 등의 청사진 - 구조체, 클래스, 열거형은 프로토콜을 채택하여 특정 기능을 실행하기 위한 프로토콜의 요구사항을 실제로 구현할 수 있음 : 해당 프로토콜을 준수Conform함- 프로토콜은 정의를 하고 제시를 할 뿐 스스로 기능을 구현하지 않음- Java의 인터페이스와 비슷한 개념? [프로토콜 정의] - protocol 키워드를 사용 123protocol 프로토콜 이름{ 프로토콜 정의}cs - 프로토콜을 채택하려면 타입 이름 뒤에 콜론을 붙여준 후 채택할 프로토콜 이름을 쉼표로 구분하여 명시해줌 - 클래스가 다른 클래스를 상속받는다면 상속받을 클래스 이름 다음부터 채택할 프로토콜을 나열해줌 [프로토콜 요..
[시작] - Swift는 데이터 타입 안전을 위하여 서로 다른 타입끼리의 값 교환을 엄격하게 제한함 - 암시적 데이터 타입 변환을 지원하지 않음 : C언어에서의 (int)10.4f와 Swift에서의 Int(10.4)는 서로 같지 않음 [기존 언어의 타입 변환과 스위프트의 타입 변환] - Swift에서는 기존 값을 전달인자로 받은 생성자를 통해 새로운 타입의 인스턴스를 생성함 - 이를 타입 변환 또는 타입캐스팅이라고 칭하지 않음- 생성자를 통해 새로운 인스턴스를 생성하는 과정일 뿐임 [스위프트 타입캐스팅] - Swift의 타입캐스팅은 인스턴스의 타입을 확인하거나 자신을 다른 타입의 인스턴스인 것처럼 가장할 수 있는 방법으로 사용 가능함 - is와 as 연산자로 구현 - 자식 클래스는 부모 클래스인 것처럼 ..