본문 바로가기

분류 전체보기

(176)
[IOS 프로그래밍을 위한 스위프트 기초] 2단원 19. 프로퍼티 19. 프로퍼티 정의 프로퍼티는 구조체, 클래스, 열거형 내부에 구현할 수 있다. 다만 열거형 내부에는 연산 프로퍼티만 구현할 수 있다. 연산 프로퍼티는 var로만 선언할 수 있다. struct Student { // 인스턴스 저장 프로퍼티 var name: String = "" var `class`: String = "Swift" var koreanAge: Int = 0 // 인스턴스 연산 프로퍼티 var westernAge: Int { get { return koreanAge - 1 } set(inputValue) { koreanAge = inputValue + 1 } } // 타입 저장 프로퍼티 static var typeDescription: String = "책상" /* // 인스턴스 메서드 f..
[Hackerrank] 18. Find a String 18. Find a String [ 난이도: Easy | 분야: Strings ] 1. 과제 과제 설명 이번 챌린지에서는, 사용자가 문자열과 하위문자열을 입력한다. 이 챌린지에서 하위문자열이 문자열 안에 얼마나 있는지 수를 세야 한다. 문자열을 탐색하는 것은 왼쪽에서 오른쪽으로 진행한다.(오른쪽에서 왼쪽으로 진행하는 것이 아님에 유의해라) 메모: 문자열 문자는 대소를 구분합니다. 입력 형식 입력의 첫 번째 줄은 원래 문자열을 포함하고 있다. 그 다음줄은 하위문자열을 포함하고 있다. 제약 사항 문자열의 길이는 1보다 크거나 같고 200보다 작거나 같다. 문자열 안의 각 문자들은 아스키문자다. 출력 형식 출력으로 보내는 정수는 하위문자열의 원래 문자열에 얼마나 겹쳐있는지 경우의 수를 나타낸다. 입력 예시 A..
[Hackerrank] 17. Mutations 17. Mutations [ 난이도: Easy | 분야: Strings ] 1. 과제 과제 설명 파이썬에서는 리스트는 수정 가능하고 튜플은 수정 불가능하다. 이 기능에 대해 아래 예시를 통해 살펴보자. 아래 예시에서는 수정할 수 없는 문자열이 주어지고, 문자열을 수정하는 것이 목적이다. 예시 string = "abracadabra" 이 때 문자열은 인덱스를 통해 접근할 수 있다: print string[5] 출력: a 여기서 값을 바꾸면 어떻게 될까요? >>> string[5] = 'k' Traceback (most recent call last): File "", line 1, in TypeError: 'str' object does not support item assignment 에러가 발생한다. ..
[IOS 프로그래밍을 위한 스위프트 기초] 2단원 18. 클로저 고급 18. 클로저 고급 후행 클로저 일단, 함수를 정의하자 func calculate(a: Int, b: Int, method: (Int, Int) -> Int) -> Int { return method(a, b) } var result: Int 후행 클로저는 클로저가 함수의 마지막 전달 인자라면 마지막 매개변수 이름을 생략한 후 함수 소괄호 외부에 클로저를 구현하는 것을 말한다. result = calculate(a: 10, b: 10) { (left: Int, right: Int) -> Int in return left + right } print(result) // 20 반환타입 생략 calculate 함수의 method 매개변수는 Int 타입을 반환할 것이라는 사실을 컴파일러도 알기 때문에 굳이 클로..
[IOS 프로그래밍을 위한 스위프트 기초] 2단원 17. 클로저 기본 17. 클로저 기본 정의 - 일급 시민(first-citizen) - 변수, 상수 등으로 저장, 전달인자로 전달 가능하다. - 함수: 이름이 있는 클로저이다. { (매개변수 목록) -> 반환타입 in 실행코드 } 함수를 사용하여 표기한다면: func sumFunction(a: Int, b: Int) -> Int { return a + b } var sumResult: Int = sumFunction(a: 1, b: 2) print(sumResult) // 3 클로저를 사용하여 표기한다면: var sum: (Int, Int) -> Int = { (a: Int, b: Int) -> Int in return a + b } 이고 결과는 sumResult = sum(1, 2) print(sumResult) // ..
[IOS 프로그래밍을 위한 스위프트 기초] 2단원 16. 클래스 vs 구조체 / 열거형 16. 클래스 vs 구조체 / 열거형 값 타입과 참조 타입 비교 클래스 - 전통적인 OOP 관점에서의 클래스 - 단일상속 - (인스턴스/타입) 메서드 - (인스턴스/타입) 프로퍼티 - 참조 타입 - Apple 프레임워크의 대부분의 큰 뼈대는 모두 클래스로 구성되어 있다. 구조체 - C언어 등의 구조체보다 다양한 기능을 가진다. - 상속 불가 - (인스턴스/타입) 메서드 - (인스턴스/타입) 프로퍼티 - 값 타입 - Swift 대부분의 큰 뼈대는 모두 구조체로 구성되어 있다. 열거형(Enum) - 다른 언어의 열거형과는 많이 다른 존재이다. - 상속 불가 - (인스턴스/타입) 메서드 - (인스턴스/타입) 연산 프로퍼티 - 값 타입 - Enumeration - 유사한 종류의 여러 값을 유의미한 이름으로 한 ..
[Hackerrank] 16. What's Your Name? 16. What's Your Name? [ 난이도: Easy | 분야: Strings ] 1. 과제 과제 설명 다른 두 줄에 사람에 대한 성씨와 이름이 있다. 이번 과제에서는 이 정보들을 읽고 아래처럼 출력하는 것이다: Hello firstname lastname! You just delved into python. 함수 설명 print_full_name 함수를 완성하라. print_full_name은 아래 파라미터를 가진다: - string first: 이름 - string last: 성씨 출력할 것 - 문자열: 'Hello firstname lastname! You just delved into python' 양식에서 firstname에는 string first를 lastname에는 string la..
[Hackerrank] 15. String Split and Join 15. String Split and Join [ 난이도: Easy | 분야: Strings ] 1. 과제 과제 설명 파이썬에는, 구분기호로 문자열을 분리할 수 있다. 예시: a = "this is a string" a = a.split(" ") # a is converted to a list of strings print a 결과: ['this','is','a','string'] 반대로 문자열을 연결할 수도 있다. a = "-".join(a) print a 결과: this-is-a-string Task 주어진 문자열을 " "(공백)으로 분리시킨 뒤, - 하이픈으로 연결하라. Function Description 아래의 에디터에 split_and_join 함수를 완성하라. split_and_join은 다..
[IOS 프로그래밍을 위한 스위프트 기초] 2단원 15. 열거형 15. 열거형 기존 다른 언어의 열거형과 다르게 기능이 강력하다. 정의 - enum은 타입이므로 대문자 카멜케이스를 사용하여 이름을 정의한다. - 각 case는 소문자 카멜케이스로 정의한다. - 각 case는 그 자체가 고유의 값이다. enum 이름 { case 이름1 case 이름2 case 이름3, 이름4, 이름5 ... } 열거형의 사용 enum Weekday { case mon case tue case wed case thu, fri, sat, sun } 원하는 만큼 케이스를 한 줄에 표현해도 무관하다. var day: Weekday = Weekday.mon 정식적인 표현은 위와 같지만, day = .tue 처럼 축약하여 표현할 수도 있다. 다만 타입이 명시되지 않았다면, 축약 형식으로 표현했을 ..
[IOS 프로그래밍을 위한 스위프트 기초] 2단원 14. 클래스 14. 클래스 정의 - 클래스는 참조 타입이다. - 다중 상속이 되지 않는다. class 이름 { /* 구현부 */ } 프로퍼티 및 메서드 class Sample { var mutableProperty: Int = 100 // 가변 프로퍼티 let immutableProperty: Int = 100 // 불변 프로퍼티 static var typeProperty: Int = 100 // 타입 프로퍼티 //인스턴스 메서드 func instanceMethod() { print("instance method") } // 타입 메서드 // 재정의 불가 타입 메서드 - static static func typeMethod() { print("type method - static") } // 재정의 가능 타입 메서드..