간략한 스위프트 문법/사용법 정리 🧐 익스텐션(Extension) 클래스, 구조체, 열거형, 프로토콜 타입에 기능을 추가(확장)할 수 있다. 클래스를 상속받지 않아도 되고, 원본 코드를 몰라도 기능을 확장시켜서 사용할 수 있도록 하는 문법이다. (새 기능을 추가할 수는 있지만, Override는 할 수 없음.) 📎 사용법 // 숫자(int) 짝수, 홀수 extension Int { var oddOrEven: String { if self % 2 == 0 { return "짝수" } else { return "홀수" } } } print(3.oddOrEven) // 출력: "홀수" print(4.oddOrEven) // 출력: "짝수" 기본 자료형(Int, Float, String 등)은 구조체(struc..
전체 글
Swift, iOS&macOS, Spring Boot간략한 스위프트 문법/사용법 정리 🧐 클래스(Class) 클래스는 참조 타입(Reference Types)이다. 따라서 원본의 값이 변경될 수 있음을 유의해야 한다. 그리고 클래스 내부에 선언된 프로퍼티(멤버 변수)는 반드시 초기화가 되어야만 한다. 따라서 클래스는 반드시 하나 이상의 생성자를 가져야 하고, 생성자를 통해 프로퍼티를 초기화 해주어야 한다. 만약 변수 선언과 동시에 초기화를 한다면 생성자에서 초기화를 하지 않아도 에러가 발생하지는 않고, 초기화를 하기 어려운 변수라면 옵셔널로 선언해야 한다. 📎 init(생성자) - Designated Initializer(지정 생성자) class UserInfo { var name: String var id: String // 지정 생성자 init(nam..
간략한 스위프트 문법/사용법 정리 🧐 enum(열거형) 기본 사용법 📎 기본 생성 enum Weekday { case mon case tue case wed, thu, fri, sat, sun } // 할당 let day: Weekday = Weekday.mon - 열거형 타입의 이름은 대문자로 시작하는 것을 권장한다. 📎 switch - case switch day { case .mon, .tue, .wed, .thu, .fri: // 타입 생략 가능 print("평일") case Weekday.sat: print("토요일") case .sun: print("일요일") } 📎 if - else if day == Weekday.fri { print("불금!") } else { print("불금이 아님 ㅜ..
간략한 스위프트 문법/사용법 정리 클로저(Closure)는 다른 언어의 람다(lambdas)와 비슷한 개념이다. 🧐 Closure 생성 방법 예시) 아래의 함수는 Int 타입의 매개변수를 받아서 "score: ~~"으로 반환해주는 함수이다. func getScore(a: Int) -> String { return "score: \(a)" } print(getScore(50)) // 출력: "score: 50" 위의 함수를 클로저로 구현하면 아래와 같다. let getScore = { (a: Int) -> String in return "score: \(a)" } print(getScore(100)) // 출력: "score: 100" 📎 축약형 - 클로저의 내부 코드가 한 줄 일때 return을 생략할 ..
간략한 스위프트 문법/사용법 정리 🧐 제어문(Control flow)Swift에서 제공하는 많은 제어문(Control flow) 중while loop / for-in / if guard / switch 문의 사용법에 대해 정리해보았다.📎 for-inlet initial = "MCH"let names = ["Adrian", "Mike", "Tom"]for char in initial { print(char)}// M// C// Hfor name in names{ print(name)}// Adrian// Mike// Tomfor index in 0...5 { print(index)}// 0 ~ 5for index in 0... 📎 while / repeat-whilerepeat-whi..
간략한 스위프트 문법/사용법 정리 🧐 Array(배열) 📎 배열 생성 방법[빈 배열 생성하기]var products = Array() // 정식 문법var ages = [Int]() // 축약형(일반적으로는 축약형을 주로 사용한다고 한다.) [기본값 할당하며 생성하기]// 3칸짜리 Int 타입 배열 생성.var Dobules = Array(repeating: 0, count: 3) // [0, 0, 0]// 리터럴 활용var shoppingList: [String] = ["Eggs", "Milk"]var items = ["pen", "card"] // 축약형- 축약형으로 선언하면 타입 추론에 의해 배열의 타입이 결정된다. 📎 원소 추가, 제거, 접근 방법 [원소 추가]// 원소를 맨 뒤에..
문제 [프로그래머스] 소수 만들기 (Level 1) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 1. 주어진 리스트에 대해 3개의 숫자를 중복 없이 조합할 수 있는 모든 경우의 수를 만든다. 2. 조합의 합이 소수인지 아닌지 판별한다. - 소수라면, count + 1 - 소수가 아니라면, 넘어간다. 위의 규칙을 구현하여 count를 반환해주면 되는 문제로, 어렵지 않게 구현을 할 수 있었다. 풀이 방법을 정리하고 가장 먼저 떠오른 방법은, 파이썬의 itertools.combinations 모듈을 활용하는 것이었다. 주어진 인자의 모든 조합을 튜플로..
코딩 테스트를 대비하여 자료구조와 알고리즘에 대해 정리하며 공부 중입니다.틀린 부분이 있을 수 있다는 점을 감안하고 봐주시기 바라며, 지적은 언제나 환영합니다. 🧐 재귀(Recursion)재귀 함수(Recursive function)는 함수 내에서 자기 자신을 호출하는 함수이다.함수 내부에서 자기 자신이 호출되면, 자기 자신을 메모리에 복사시켜 놓고 함수를 호출한다.그리고 반드시 함수가 무한 루프에 빠지지 않기 위해서는 base case를 설정해주어야 한다. * base case : 함수가 더 이상 자기 자신을 호출하지 않도록 설정하는 조건을 의미한다. // 인수 N의 팩토리얼을 구하는 재귀 함수 (python)def factorial(N): if (N == 1): // base case (탈출 조..
간략한 스위프트 문법 정리 🧐 [var, let, Tuples] (변수, 상수, 튜플) 📎 변수, 상수 선언 방법 // 변수 var str = "Hello" var age = 10 // 상수 let name = "MCH" let year = 2022 변수/상수의 타입을 미리 지정해놓지 않아도, 타입 추론(Type Inference)을 통해 변수/상수의 타입을 자동으로 지정해준다. 위 방법은 편리하지만, 예상하지 못한 문제를 야기할 수도 있으므로 타입 어노테이션(Type Annotation)을 통해 변수/상수의 타입을 개발자가 미리 지정해주는 것이 좋다. // 타입 어노테이션(Type Annotation) var str: String = "Hello" let height: Float = 180.0 var ..
문제 1417번: 국회의원 선거첫째 줄에 후보의 수 N이 주어진다. 둘째 줄부터 차례대로 기호 1번을 찍으려고 하는 사람의 수, 기호 2번을 찍으려고 하는 수, 이렇게 총 N개의 줄에 걸쳐 입력이 들어온다. N은 50보다 작거나 같www.acmicpc.net 풀이 단순 구현처음 문제를 이해하고 생각나는 대로 구현을 해봤는데 한 번에 통과했다. [소스 코드]N = int(input())arr = []count = 0for _ in range(0, N): arr.append(int(input()))if N > 1: # 단일 후보일 땐 매수할 필요가 없다. while True: _max = max(arr) if _max > arr[0]: idx..