전체 글 198

큰 수의 법칙

해당 문제는 C++을 사용하여 코딩합니다. □ 내가 작성한 소스코드 #include void bigNum() { int N, M, K; vector v; int sum = 0; //입력 받는 부분 cin>> N >> M >> K; for(int i=0;i> x; v.push_back(x); } sort(v.begin(),v.end()); //입력받은 수 정렬 int max = v[N-1]; //가장 큰수 int secondMax = v[N-2]; //두번째로 큰 수 int k = K; while ( M > 0 ){ if(k!=0) // 가장 큰 수 반복하는 경우 sum += max; if(k == 0){ // 연속하는 횟수가 모두 소진된 경우 k = K; sum += secondMax; //두번째로 큰 ..

알고리즘/Greedy 2023.01.04

Swift 문법과 친해지기 - protocol

프로토콜 구조체, 클래스, 열거형은 프로토콜을 채택해서 특정 기능을 실행하기 위한 프로토콜의 요구사항을 실제로 구현할 수 있다. 스스로 기능을 구현하지 않는다. 하나의 타입으로 사용되기 때문에 다음과 같은 타입에서 사용가능 하다. 함수, 메소드, 이니셜라이저의 파라미터 타입, 상수, 변수, 프로퍼티 타입, 배열, 딕셔너리 원소 타입 간단히 말해 프로토콜은 해당 기능에 필요한 요구사항을 선언해두는 것이다. 다른 언어들의 인터페이스와 비슷한 개념 같다. □ 프로토콜 예시 protocol Band{ var drum: String {get set} var vocal: String {get set} var piano: String {get set} var guitar: String {get set} func pl..

iOS/문법 2023.01.04

Swift 문법과 친해지기 - Type Casting 와 Any, AnyObject

is is 연산자는 타입을 확인하는 연산자로 반환 값은 Bool 타입이다. □ 예시 class Human {} class Teacher: Human {} class Animal {} let teacher: Teacher = .init() teacher is Teacher// true teacher is Human//true teacher is Animal//false → is는 영어 문법 같은 느낌인 것 같다. → 해당 변수의 타입이 is 뒤에 오는 타입인 경우 true, 아닌 경우 false를 반환한다. as as 는 어떤 해당 Type으로 변경시킬 수 있는 문법 표현식이다. as를 사용하면 UpCasting, DownCasting을 사용하는데 UpCasting 업캐스팅은 예시를 들어서 살펴보면 조금 ..

iOS/문법 2023.01.04

Swift - Class vs Struct

Class, Struct의 공통점 값을 저장할 프로퍼티를 선언할 수 있다. 함수적 기능을 하는 메서드를 선언할 수 있다. 내부 값에 '.'을 사용하여 접근 가능하다. 생성자를 사용해 초기 상태를 설정할 수 있다. extension을 사용하여 기능을 확장할 수 있다. Protocol을 채택하여 기능을 설정할 수 있다. Class, Struct 차이점 Class 참조 타입 Heap 영역에 동적으로 할당돼서 Stack 영역보다 접근 속도가 느리다 Heap 영역은 스레드가 메모리를 공유하는 공간이기 때문에 스레드로부터 안전하지 않으므로 thread lock 기능이 필요하다 → 오버헤드 가능성 있음 같은 인스턴스를 여러 개의 변수에 할당한 뒤 값을 변경시키면 할당한 모든 변수에 영향을 준다. ARC로 메모리를 관..

iOS/Swift 상식 2022.12.31

Swift 문법과 친해지기 - Subscript

subscript 서브스크립트는 우리가 배열을 사용할 때 배열 속 원소에 접근하기 위해 사용하는 대괄호 []를 지칭한다. □ 배열 서브스크립트 정의 → index를 int타입으로 받고 Element를 반환한다. □ 딕셔너리 서브스크립트 정의 → key값을 input으로 받고 Value를 반환한다. 이를 이용해 서브스크립트를 입맛에 맞게 변형할 수 있다 서브스크립트 정의하기 subscript(index: Int) -> Int { get { } set(newValue) { } } → subscript 키워드로 작성하고 1개 이상의 매개변수 값과 반환 값을 지정 (생략 불가) → getter 혼자 사용은 가능 하지만, setter는 혼자 사용이 불가능하다. □ 배열 서브스크립트 사용해보기 let str = "..

iOS/문법 2022.12.31

Swift 문법과 친해지기 - 고차함수 (map, filter, reduce)

map map은 데이터를 변형하고자 할 때 사용한다. 기존 데이터를 입력으로 넣으면 새로운 컨테이너를 반환한다. □ 장점 for-in 구문과 큰 차이가 없지만 코드가 확 줄어든다는 장점이 있다. 재사용하기 용이하다 컴파일러 최적화 성능이 좋다. let numArray = [1,3,5,7,9] //for-in 사용 var multiArray2 = [Int]() for num in numArray{ multiArray2.append(num * 2) } // 원래 클로저 구문 let multiArray1 = numArray.map { (num: Int) -> Int in return num * 2 } // 축약시킨 버전 let multiArray = numArray.map { $0 * 2 } → for-in을..

iOS/문법 2022.12.26

Swift 문법과 친해지기 - Set

Set var strs = Set() var strs = Set(["A","B","C","D"]) → Set 선언 → 선언과 동시에 데티터 입력 가능 Set 함수 기본적으로 딕셔너리와 Set에서 사용할 수 있는 함수는 비슷하다. 삽입: insert 삭제: remove 포함되어 있는지 확인: contains 개수: count 공백 확인: isEmpty Set은 말 그대로 집합이라 우리가 알고 있는 집합 연산이 가능하다. Set 연산 union 두 Set을 합쳐 새로운 Set 생성 subtract 겹치는 부분 제외하고 새로운 Set 생성 intersect 교집합부분을 새로운 Set 생성 exclusiveOr 교집합을 제외한 나머지 부분을 새로운 Set으로 생성 Set 비교 isSubsetOf Set의 모든 ..

iOS/문법 2022.12.26

Swift 문법과 친해지기 - Dictionary

Dictionary Dictionary는 swift를 사용할 때 매우 자주 사용하는 기능이다. Dictionary 사용법 □ Dictionary 선언 // 빈 딕셔너리 선언 var dic2: [String: Int] = [:] var dic3 = Dictionary() → String, Int 타입으로 구성된 딕셔너리를 비어있게 생성 □ 빈 딕셔너리를 생성하지 않고 선언과 동시에 데이터 값 저장 var dic1: [String: Int] = ["height": 160 , "age": 20] → String, Int 타입으로 선언과 동시에 생성이 가능하다. □ 딕셔너리 한개에 여러 타입을 선언하는 경우 var dic4: [String: Any] = ["name": "A","age" : 10] var dic..

iOS/문법 2022.12.26