일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- swift
- MKMapViewDelegate
- 단일 책임원칙
- weak var
- 서체관리자
- dispatchsource
- AnyObject
- weatherKit
- font book
- addannotation
- Xcode
- 러닝기록앱
- CLLocationManagerDelegate
- UIAlertAction
- 한국어 개인정보처리방침
- WeatherManager
- xcode로 날씨앱 만들기
- Protocol
- 영문 개인정보처리방침
- Timer
- RunningTimer
- App Store Connect
- 클로저의 캡슐화
- Required Reason API
- CoreLocation
- SwiftUI Boolean 값
- MKMapItem
- 러닝타이머
- UICollectionViewFlowLayout
- Startign Assignments
- Today
- Total
목록전체 글 (215)
VesselWheel
Homebrew 설치 1. 홈브류 사이트 접속 후 Install Homebrew 명령어를 복사해줍니다. 홈브류 사이트 https://brew.sh/ Homebrew The Missing Package Manager for macOS (or Linux). brew.sh 홈브류 사이트에 접속하셔서 Install Homebrew 밑 명령어를 복사하시면 됩니다. 2. 터미널에 복사한 명령어 붙여넣고 엔터를 눌러줍니다. /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 이후 Checking for 'sudo' access (which may request your password) 라인이 나오..
콘솔영역 프린트 화면 class burgerHouse { var shakeShakeMenu : String var burgerSpec : String //메뉴, 스펙 입력 전 초기화 init(shakeShakeMenu: String, burgerSpec: String) { self.shakeShakeMenu = shakeShakeMenu self.burgerSpec = burgerSpec } // burgerHouse의 class 메소드 func startKioskMenu() { // 키오스크 리스트를 출력하는 함수 출력 후 kioskMenuListPrint() //콘솔창에 출력 "원하는 메뉴 번호를 선택해주세요. print("원하는 메뉴 번호를 선택해주세요.") //콘솔창에 readLine() 활용 키..
문제 풀이 func solution(_ s:String) -> Bool { if s.count != 4 && s.count != 6 { return false } for char in s { if !char.isNumber { return false } } return true } 문자열 s가 4 혹은 6이 아닌 경우를 count해서 맞지 않으면 false 문자열 s에 char가 숫자가 아니면 false 한 후 두 조건에 맞으면 나머지인 경우는 숫자이며 4, 6의 길이를 가진 문자열을 배출 다른사람 풀이 func solution(_ s:String) -> Bool { return (Int(s) != nil && (s.count == 4 || s.count == 6)) ? true : false } 문자열..
Closure란? 클로저는 이름없는 함수 즉, 코드 블록을 말합니다. 클로저는 상수나 변수의 참조를 캡쳐(capture)해 저장할 수 있습니다 스위프트의 클로저는 주변 환경에 있는 변수나 상수를 캡처하여 저장하고, 이를 나중에 사용할 수 있도록 합니다. 이것은 클로저가 생성될 때 클로저가 참조하는 변수 또는 상수의 값에 대한 복사본을 유지하고 저장하는 메커니즘입니다 값(value) 캡처: 클로저가 변수나 상수의 값을 캡처합니다. 이때, 클로저 내부에서 캡처한 값이 변경되어도 원본 값은 변경되지 않습니다. 참조(reference) 캡처: 클로저가 변수나 상수의 참조를 캡처합니다. 따라서 클로저 내에서 해당 변수나 상수를 변경하면 원본 값도 변경됩니다. let char: Character = "A" prin..
문제 새로 생긴 놀이기구는 인기가 매우 많아 줄이 끊이질 않습니다. 이 놀이기구의 원래 이용료는 price원인데, 놀이기구를 N 번 째 이용한다면 원래 이용료의 N배를 받기로 하였습니다. 즉, 처음 이용료가 100이었다면 2번째에는 200, 3번째에는 300으로 요금이 인상됩니다. 놀이기구를 count번 타게 되면 현재 자신이 가지고 있는 금액에서 얼마가 모자라는지를 return 하도록 solution 함수를 완성하세요. 단, 금액이 부족하지 않으면 0을 return 하세요. 제한 사항 놀이기구의 이용료 price : 1 ≤ price ≤ 2,500, price는 자연수 처음 가지고 있던 금액 money : 1 ≤ money ≤ 1,000,000,000, money는 자연수 놀이기구의 이용 횟수 coun..
구조체나 열거형 내에서 매서드가 내부 속성을 수정할 수 있도록 하는 키워드 mutating func /* Swift에서 mutating 키워드는 구조체(Structs)나 열거형(Enum) 내에서 메서드(Method)가 해당 구조체 또는 열거형의 속성을 수정할 수 있도록 하는 키워드입니다. 기본적으로 Swift에서는 구조체나 열거형의 인스턴스가 상수로 선언되면 해당 인스턴스의 속성을 변경할 수 없습니다. 그러나 메서드 내에서 해당 인스턴스의 속성을 변경하려면 mutating 키워드를 사용하여 해당 메서드가 해당 인스턴스의 속성을 수정할 수 있도록 허용해야 합니다. */ // 구조체 예시 struct Point { var x = 0.0, y = 0.0 mutating func moveBy(x deltaX: ..
문제 풀이 func solution(_ s:String) -> String { return String(s.sorted(by: >)) } 해석 문자열을 내림차순(sorted(by:>)으로 정렬 후 String으로 재배열화 Tip Sorted(by:) : 참조된 복사값이 오름차순(기본값)으로 정렬됨, 내림차순(>) : 큰 것부터 정렬 sort() : 원본의 값이 오름차순으로 정렬됨 Instance Method sorted(by:) Returns the elements of the sequence, sorted using the given predicate as the comparison between elements. iOS 8.0+ macOS 10.10+ Mac Catalyst 13.0+ tvOS 9.0..
// // ContentView.swift // Calculator with class // // Created by t2023-m0006 on 11/29/23. // import Foundation class Calculator { /*강제 해제(Force Unwrapping)되지 않는 옵셔널 초기화 옵셔널 타입을 가진 속성은 선언과 동시에 초기화되거나 나중에 값을 할당할 수 있다. */ var firstNumber : Double? var secondNumber : Double? //덧셈 func AddOperation(_ firstNumber: Double, _ secondNumber: Double) -> Double { return firstNumber + secondNumber } //뺄샘 fu..
문제 약수의 개수와 덧셈 Description 두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ left ≤ right ≤ 1,000 입출력 예leftrightresult 13 17 43 24 27 52 입출력 예 설명 입출력 예 #1 다음 표는 13부터 17까지의 수들의 약수를 모두 나타낸 것입니다. 수약수약수의 개수 13 1, 13 2 14 1, 2, 7, 14 4 15 1, 3, 5, 15 4 16 1, 2, 4, 8, 16 5 17 1, 17 2 따라서, 13 + 14 + 15 - 16 + 17 = 4..
1. class 구조화 import Foundation class Calculator { var a : Double? var b : Double? //덧셈 func plus(_ a: Double, _ b: Double) -> Double { return a + b } //뺄샘 func minus(_ a: Double, _ b: Double) -> Double { return a - b } //곱셉 func multi(_ a: Double, _ b: Double) -> Double { return a * b } //나눗셈 func divide(_ a: Double, _ b: Double) -> Double? { guard b != 0 else { print("0으로 나눌 수 없어요.") return nil..
들어가기 앞서, 내적(스칼라곱) 이란 https://ko.wikipedia.org/wiki/%EC%8A%A4%EC%B9%BC%EB%9D%BC%EA%B3%B1 두 벡터의 좌표가 각각의 배열 a = [a1, a2, ...], b = [b1, b2]을 가지고 있을 때, 이 둘의 스칼라곱은 같은 위치의 성분을 곱한 뒤. 모두 합하여 얻는 값이다. 문제 풀이 func solution(_ a: [Int], _ b: [Int]) -> Int { // 조건문으로 두 벡터의 길이가 같지 않으면 guard 조건문을 실행 guard a.count == b.count else { // 두 배열의 길이가 다르면 예외 처리 또는 기본값 반환 return 0 } var result = 0 for i in 0.. Int { retu..
제곱 구하기 import Foundation let value = 3.0 pow(value, 2) // 9.0 제곱할 값 value, 제곱수 2 결과값을 Int로 변환하려니 다음과 같은 에러가 났다. Initializer 'init(_:)' requires that 'Decimal' conform to 'BinaryInteger' pow 의 두 인자를 모두 소수점형으로 바꾸면 해결이 된다. pow(_ x: Decimal, _ y: Int) -> Decimal 대신 다음 생성자를 사용하는 방식이다. (Double로 변환해도 가능) pow(_: Float, _: Float) -> Float 제곱근 구하기 import Foundation let value = 9.0 sqrt(value) // 3.0 func ..
문제 풀이 func solution(_ n:Int) -> String { // 0부터 n-1까지 범위 생산 // map 함수를 이용하여 짝수, 홀수 구분 // map 명령 배열 내에 조건에 따라 실행해라. // reduce 함수 배열의 모든 요소 결합, 초기값으로 "" String 빈문자열, 다음 자리부터 더하기 return (0 ..< n).map{($0 % 2 == 0 ? "수":"박")}.reduce("", +) } Tip Instance Method map(_:) Returns an array containing the results of mapping the given closure over the sequence’s elements. iOS 8.0+ macOS 10.10+ Mac Catalys..
IOS 종합반 복습 중에 stroyboard가 xml 화면으로 변경되었다. Xcode에 내장된 github commit하고 push해서 github 홈페이지에 정상적으로 공유가 되었으나, xcode로 돌아오니 저렇게 화면이 나온다. (당황당황) 내일배움캠프 이근나 튜터님께 바로 가서 물어봤더니 해답이 바로 나온다 ㅎ 당황하다보니 구글링할 생각도 안하도 바로 달려갔다 ㅎ https://stackoverflow.com/questions/30567998/how-to-open-storyboard-as-xml-source/35304926#35304926 How to open Storyboard as xml source? I need to reorder View controllers in my Storyboard...
Class UITableViewCell The visual representation of a single row in a table view. iOS 2.0+ Mac Catalyst 13.1+ tvOS 9.0+ visionOS 1.0+ Beta @MainActor class UITableViewCell : UIView Overview A UITableViewCell object is a specialized type of view that manages the content of a single table row. You use cells primarily to organize and present your app’s custom content, but UITableViewCell provides so..
문제 풀이 func solution(_ s:String) -> String { return s.count % 2 == 0 ? String(Array(s)[(s.count/2)-1...s.count/2]) : String(Array(s)[s.count/2]) } 해석 1. s.count % 2 == 0 ? : 문자열의 길이가 짝수인지 나머지가 0인지 확인 2. String(Array(s)[(s.count / 2)-1...s.count/2]) : 1) ? 만약 문자열 s 매개변수가 짝수라면, s 배열 가운데 두글자를 반환 2) Array(s)는 s를 문자 배열로 변환하고, 그 배열 가운데 [(s.count / 2)-1...s.count/2]) 는 가운데와 가운데로부터 -1의 두 원소의 인덱스를 나타냄 3) ..
문제 풀이 func solution(_ arr:[Int]) -> [Int] { if arr.count == 1 { return [-1] } var min = arr.min()! var answer = arr.filter{$0 > min} return answer } 해석 1. 제일 작은 수를 제거하고나서 빈 배열이면 [-1]을 배출하려면 // 배열의 길이를 count로 길이가 1이라면, 함수는 [-1] 반환하고 종료 if arr.count == 1 { return [-1] 이어서 // min() 함수를 활용하여 배열에서 가장 작은 원소를 찾고, 그 값을 인스턴스 min에 저장 // min() 함수는 배열의 모든 원소 중 가장 작은 값을 반환 // (!) 느낌표는 강제 추출 연산자로, 반환값이 Option..
문제 풀이 import Foundation func solution(_ numbers:[Int]) -> Int { let total = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].reduce(0, +) let sum = numbers.reduce(0, +) return total - sum } 해석 1. 배열 [0...9] 를 포함하고 있는 인스턴스 total를 모두 더하기 : reduce(0, +) // 0번째부터 다음 항의 연산자 +로 계산 2. 상수 sum에 매개변수 배열 numbers를 모두 더하기 : reduce(0, +) // 배열안에 모두 더한 상수 sum 3. total 인스턴스에서 sum 인스턴스를 빼면, numbers 배열에 포함되지 않은 수를 모두 더한 값 return T..
문제 Description 프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다. 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요. 제한 조건 phone_number는 길이 4 이상, 20이하인 문자열입니다. 입출력 예 phone_numberreturn "01033334444" "*******4444" "027778888" "*****8888" 풀이 func solution(_ phone_number:String) -> String { return String(repeating: "*", count: phone_number.count -..
A. 협업을 위한 xcode 사용 간 github와 연동하기 1. xcode 내 github 계정 등록 2. Settings 팝업에서 git 계정 등록하기 - 애플 계정 등록 후 github 홈페이지에 가입한 계정메일과 토큰을 작성하면 된다. (토큰 작성은 3번) 3. git 계정에서 token 가져오기 - 우상단 프로필 계정 클릭 4. 프로필 팝업의 settings 클릭 5. 좌 하단의 Developer settings 클릭 6. 좌측 personal access tokens 클릭 - tokens(classic) 클릭 7. 좌측의 generate token 클릭 후 팝업에서 generate new token(classic) 클릭 8. Note에 리포지토리 제목을 작성 후 공유할 범위 선택(repo ~ ..
A. Terminal 이용하기 위한 linux 문법 a. pwd : 현재 경로 확인, ls : list(현재 경로 내 폴더 확인) b. ls -a : 숨겨져 있는 파일 c. cd : change directory, 해당 경로로 이동 d. .. : 상위 폴더로 이동 e. mkdir : 폴더 생성 f. touch 파일명 : 현재 경로에서 생성하는 파일 B. Git이란 형상관리 언어툴 : 코드 변경점 기록(버전 관리 도구) C. Github : 온라인으로 백업 -> 팀원들에게 쉽게 공유 가능 : 백업과 공유가 가능한 온라인 코드 저장소 1. git init : 코드 관리를 시작하는 명령어 : 초기 세팅하는 명령어 initialize - 프로젝트 시작 전 정확한 폴더에서 입력해야 함. / 한 번만 입력하면 된다..
문제 풀이 import Foundation func solution(_ absolutes:[Int], _ signs:[Bool]) -> Int { // 결과값 result 초기화 var result = 0 // i 인티져가 매개변수 absolutes의 각 자리를 순회하여 signs[i]가 참인 정수가 양수, 아니면 음수로 각각의 배열 absolute 안에서 더하거나 뺀다. for i in 0.. Int { return (0..
1. 들어가기 맥북을 사용하기 전에 윈도우에서도 자동화 기능으로 다양한 워크플로어를 구현했던 경험이 있다. 맥북에서도 구현 가능한지 문뜩 생각이 나서 검색해보니 Automator라는 기능이 구현되어 있다. 2. 사용하는 방법 가. automator에 진입하면 팝업으로 automator 작업파일이 나온다. 나. 예제로는 원하는 홈페이지에 바로 진입할 수 있는 바로가기 기능을 구현한다. 다. 보관함에서 유틸리티 - 응용프로그램 실행 아이콘을 우측 동작화면으로 드로그엔 드랍을 한다. 라. 우측 응용프로그램 실행에서 사파리를 선택 라. 보관함 - 인터넷 - [지정된 URL 가져오기], [웹페이지 보기]을 차례대로 실행화면으로 드래그 앤 드랍 1) [지정된 URL 가져오기] 에서 진입하고자 하는 URL을 추가 2..
문제 풀이 func solution(_ arr:[Int], _ divisor:Int) -> [Int] { // 매개변수 arr을 divisor로 나눈 나머지가 0으로 필터링 한 후 오름차순(sorted())으로 배열 안에서 정렬 let result = arr.filter{$0 % divisor == 0}.sorted() // 나누어 떨어지는 element가 없으면 배열 안에 -1을 담아 result로 반환 return result.count == 0 ? [-1] : result } Tip 고차함수 filter 참조 https://vesselwheel.tistory.com/103
문제 풀이 func solution(_ seoul:[String]) -> String { return "김서방은 \(seoul.firstIndex(of: "Kim")!)에 있다" } TIP firstIndex(of:) Returns the first index where the specified value appears in the collection. iOS 8.0+ iPadOS 8.0+ macOS 10.10+ Mac Catalyst 13.0+ tvOS 9.0+ watchOS 2.0+ visionOS 1.0+ Beta func firstIndex(of element: Self.Element) -> Self.Index? Available when Element conforms to Equatable. P..
문제 입출력 설명 입출력 예 #1 문제의 설명과 같습니다. 입출력 예 #2 16 → 8 → 4 → 2 → 1 이 되어 총 4번 만에 1이 됩니다. 입출력 예 #3 626331은 500번을 시도해도 1이 되지 못하므로 -1을 리턴해야 합니다. 풀이 func solution(_ num:Int) -> Int { // 매개변수를 number 변수에 할당 var number = num // count 변수 초기화, 작업의 반복 var count = 0 // while 루프를 사용하여 number가 1이 아니고 count가 500 이하인 동안 작업을 반복 while number != 1 && count
문제 풀이 func solution(_ a:Int, _ b:Int) -> Int64 { // Int 탑입의 매개변수 a, b를 받아서 최소값(a, b)...최대값(a, b) 중에 reduce 함수 활용하여 첫 번째 인자는 초기값으로 0을 사용하고 두번째 인자는 + 연산자를 활용하여 모든 정수를 합한다. == a, b사이의 모든 정수의 합을 반환한다. return Int64((min(a, b)...max(a, b)).reduce(0, +)) } /* reduce 함수 란? Swift의 reduce 메서드는 컬렉션의 모든 요소를 결합하여 단일 값을 생성하는 데 사용됩니다. 이 메서드는 두 개의 인수를 받습니다: 초기 결과 값과 결합을 수행하는 클로저입니다. reduce 메서드의 기본적인 사용법은 다음과 같습..
고차 함수 맵(map) map은 자신을 호출할 때 매개변수로 전달된 함수를 실행하여 그 결괏값을 다시 반환해주는 함수이다. map을 사용하기 위해서는 Swift의 Collection, Sequence 프로토콜을 따르면 가능하다. 따라서 Array, Dictionary, Set, optioanl 등에서 사용이 가능 map을 사용하여도 기존의 컨테이너의 값은 변경되지 않고 새로운 컨테이너가 생성되어 map은 기존 데이터를 변형하는데 많이 사용된다. map은 다른 함수의 형태로 입력을 받는다. map 메서드와 for-in 구문의 차이점은 코드의 재사용이나 컴파일러 최적화 성능 차이이다. 또, 다중 스레드 환경일 때 대상 컨테이너의 값이 스레드에서 변경되는 시점에 다른 스레드에서도 동시에 값이 변경되려고 할 때..
// Int64 타입의 매개변수 n을 받아서, func solution(_ n:Int64) -> Int64 { //정수 n을 String으로 변환 후 내람차순으로 sorted(by: >) 정렬한 후 정렬된 문자열(String)으로 정렬 한 후 이를 Int값으로 가장 높은 숫자에서 낮은 숫자 순으로 재정렬 return Int64(String(String(n).sorted(by: >)))! // 재정렬된 문자열을 Int64 숫자로 변환하며 함수 내부값 강제해제(!) } solution(3252) // 결과값 5322 /* 문법 Tip 옵셔널 강제해제 ! 옵셔널을 강제 해제하는 방법은 옵셔널 타입의 값 뒤에 "!"만 붙여주면 됩니다. 이 "!"를 강제 해제 연산자라고 합니다. var optInt: Int? =..
문제 풀이 import Foundation func solution(_ n:Int64) -> Int64 { var N = Double(n) // 입력받은 양의 정수 n을 64bit 부동소수점 Double 자료형으로 전환 // Foundation에서 제공하는 제곱근(sqrt) 함수에서 제곱근에서 정수부분을 버림(floor) 함수를 뺀 값이 0이 아닐 때 if (sqrt(N) - floor(sqrt(N)) != 0) { // n이 양의 정수 x의 제곱이 아니라면 -1 리턴 return -1 } else { // Foundation에서 제공하는 제곱(pow)함수 사용하여 제곱근과 제곱 계산, n이 양의 정수 x의 제곱이라면 x+1제곱 리턴 return Int64(pow(sqrt(N)+1,2)) } } solu..