λ¬Έμ νμ΄
func solution(_ a:Int, _ b:Int) -> Int64 {
var val: Int = 0
if a < b {
for i in a...b {
val += i
}
}
else if b < a {
for i in b...a {
val += i
}
}
else {
return Int64(a)
}
return Int64(val)
}
맨 μ²μ λ¬Έμ λ₯Ό λ΄€μ λ, μ΄λ€ μμΌλ‘ ꡬμ±ν μ§ κ³ λ―Όνλ€ μ°μ λ¬Έμ νμ΄λλ‘ λμνλ μ μ½λλ₯Ό λ§λ€μλ€. 쑰건문μ μ¬μ©νμ¬ aμ bμ ν¬κΈ°λ₯Ό ꡬλΆνμκ³ κ·Έμ λ°λ₯Έ μ°μ°μ μΆκ°νμλ€. λν else λ¬Έμλ aμ bκ° λμΌν λμ μμΈλ₯Ό μ²λ¦¬νκΈ° μν κΈ°λ₯μ ꡬννμλ€.
νμ§λ§ κΈ°μ‘΄ μ½λλ₯Ό λμ± ν¨μ¨μ μΌλ‘ μ 리ν΄λ³Ό μ μμκ±° κ°μ μλμ μ½λλ‘ μμ ν΄λ³΄μλ€.
λ¬Έμ νμ΄
func solution(_ a:Int, _ b:Int) -> Int64 {
var val: Int = 0
for i in a < b ? a...b : b...a {
val += i
}
return a == b ? Int64(a) : Int64(val)
}
νμ΄ μ½λλ₯Ό μμ νλ©΄μ μ κΈ°ν κ²μ μκ² λμλ€.
Swiftμμμ for λ¬Έμμ μΌνμ°μ°μλ₯Ό νμ©ν μ μμλ€.
for i in a < b ? a...b : b...a {
~~~
}
κΈ°μ‘΄μ μ¬μ©νλ Cμλ λ¬λΌ λ§€μ° μ κΈ°νκ² λκ»΄μ‘λ€. μλ§ μ΄λ² λ¬Έμ κ° μλμλ€λ©΄, λͺ°λμ Swift λ¬Έλ²μΈ κ² κ°λ€.
func solution(_ arr:[Int], _ divisor:Int) -> [Int] {
var val = arr.filter{ $0 % divisor == 0 }
val.sort(by: <)
return val.last == nil ? [-1] : val
}
μ΄λ² λ¬Έμ λ μκ°λ³΄λ€ μ½κ² νλ Έλ€. μλ§ filter
λ₯Ό νμ©νμκΈ°μ νΈνλ κ² κ°λ€.
μ°μ μ λ ₯κ° μ€ νλμΈ arr λ°°μ΄κ°μ divisorμΌλ‘ λλμ΄ κ°κ°μ μμμ λλ¨Έμ§κ° 0μ΄ λλ κ²λ§ filterλ₯Ό μ¬μ©νμ¬ μ λ ¬νμλ€.
κ·Έλ¦¬κ³ print()
λ₯Ό νμ©νμ¬ valμ κ°μ νμΈν΄λ³΄μλλ°, μ
λ ₯κ°μ μμμ λν΄ μμ°¨μ μΌλ‘ μ λ ¬λμ§μμ κ²μ λ³Ό μ μμλ€.
κ·Έλμ μ΄λ₯Ό ν΄κ²°νκΈ° μν΄ sort(by: <)
λ₯Ό ν΅ν΄ μ¬λ¦Όμ°¨μμΌλ‘ μ λ ¬ν΄μ£Όμκ³ , λ§μ§λ§μΌλ‘ μΌνμ°μ°μλ₯Ό νμ©νμ¬ λ¬Έμ λ§μ§λ§ 쑰건μ μΆ©μ‘±μμΌμ£Όμλ€.
Sparta λ΄λ°°μΊ μμ μ 곡λ Swift κΈ°μ΄ λ¬Έλ² κ°μλ₯Ό λ£κ³ λͺ¨λ₯΄λ λ΄μ©λ§ μ 리ν΄λ³΄μλ€.
μμ§κΉμ§ μ λ°μ μΌλ‘ Cμμ λ€λ£¬ λΆλΆκ³Ό μ μ¬ν κ²λ€μ΄ λ§μ μ½κ² λκ»΄μ§λ€.
μλμ μ½λμμ λ³μ ansμ λν΄ λ°μ΄ν° νμ μ λ³λλ‘ μ§μ ν΄μ£Όμ§ μμλ€.
func solution(_ a:Int, _ b:Int) -> Int64 {
var val: Int = 0
var ans = 100
~~~
}
κ·ΈλΌ Xcode μ»΄νμΌλ¬κ° μμμ μ λ ₯λ κ°μ μλ§λ λ°μ΄ν° νμ μ μ μΆνλλ°, ν΄λΉ νμ μ μκ³ μΆλ€λ©΄ λ³μ μμ "option" ν€λ₯Ό λλ₯΄κ³ λ§μ°μ€λ₯Ό μ¬λ¦¬λ©΄ μλμ κ°μ κ²°κ³Όλ₯Ό λ³Ό μ μμ κ²μ΄λ€.
νμ
μ μ격
(= Type Safeν μΈμ΄)
μμ λͺ μΌκ° Swiftλ₯Ό μ¬μ©νμ¬ μ½λ©ν μ€νΈ λ¬Έμ λ€μ νμ΄λ³΄μλλ°, νμ λλ μ μ€ νλκ° λ°μ΄ν° νμ μ λν΄ μ격νμ¬ νμ λ³νκ³Ό μΌμΉμ μ κ²½μ λ§μ΄ μΈ μ λ°μ μμλ€...
nil(λΉ κ°μ μλ―Έ)μ μ격
- μ»΄νμΌ μ λ¬Έμ κ° λ°μν μ μλ nil κ°μ²΄λ₯Ό λ§λ€κ±°λ μ¬μ©ν μ μμ
- λ§μ½ nilμ μ¬μ©ν κ²½μ° ?λͺ¨μμ μ΅μ λ(Optional)μ μ΄μ©νμ¬ νμ
μ°μ° νλ‘νΌν°λ κ·Έ λ κ·Έ λ κ³μ°ν κ°μ μλ €μ£ΌκΈ° λλ¬Έμ varλ₯Ό μ¬μ©νλ©°, λ§€λ² κ°μ μ°μ°νμ¬ νμ©νκΈ° λλ¬Έμ νΉμ κ°μ μ μ₯νμ§ μλλ€.
var x = 10
var y = 20
var z = 0
var sum: Int {
get {
return x + y
}
set {
z = x + y
}
}
print(sum)
// μΆλ ₯κ°: 30
var sum1: Int {
return x + y
}
var sum2: Int {
x + y
}
κ·Έλ¦¬κ³ getκ³Ό set μ€ getλ§ νμν κ²½μ°μλ ν€μλ μλ΅ κ°λ₯νλ©°, returnμ μ§μ°κ³ μ¬μ©μ΄ κ°λ₯νλ μμμ΄ ν μ€μΌ κ²½μ°μλ§ μ¬μ©ν μ μλ€.
μ¬λ¬ μ€μ ν μ€νΈλ₯Ό StringμΌλ‘ μ μ₯ν λ, μλμ κ°μ λ°©λ²μ νμ©ν μ μλ€.
var greeting = """
Hello
World
π
"""
λ¬Έμμ΄ λ΄μ λ³μλ μμμ κ°μ λνλ΄κ³ μΆμ λ μ¬μ©νλ©°, ( ) λ₯Ό μ¬μ©νλ©΄ λλ€.
let height = 185
let myInfo = "My height is \(height) π"
// μΆλ ₯κ°: My height is 185 π
Swiftμμλ ν¨μλ νλμ νμ μΌλ‘ μ·¨κΈλ μ μλ€!
μ΄λ¬ν μ μ νμ©νμ¬ λ€λ₯Έ ν¨μμ 맀κ°λ³μλ‘ μ λ¬νκ±°λ, λ€λ₯Έ ν¨μμ λ°νκ°μΌλ‘ μ¬μ©ν μ μλ€.
ν¨μ(Function)μ λ©μλ(Method)λ μ μ¬ν κΈ°λ₯μ ꡬννμ§λ§ λͺ κ°μ§ μ°¨μ΄μ μ΄ μλ€.
- μ μμ μμμ±
ν¨μ
: λ
립μ μΌλ‘ μ μλλ©° μΌλ°μ μΌλ‘ μ μ λ²μμμ μ μλκ±°λ νΉμ λ²μ λ΄μ λ΄μ₯
λ©μλ
: ν΄λμ€, ꡬ쑰체, μ΄κ±°ν λ±μ νΉμ ν νμ
μ μν΄ μκ³ , ν΄λΉ κ°μ²΄μ νΉμ ν κΈ°λ₯μ μννκΈ° μν΄ μ¬μ©
- νΈμΆ λ°©μ
addNumbers(5, 3)
// ν¨μ μ΄λ¦ λ€μ κ΄νΈλ₯Ό μ¬μ©νμ¬ νΈμΆ
myObject.increment()
// κ°μ²΄ λλ νμ
μΈμ€ν΄μ€ λ€μ λ©μλ μ΄λ¦μ νΈμΆ
- μμμ±
ν¨μ
: ν¨μλ νΉμ ν κ°μ²΄μ μμ±μ΄λ μνμ μ κ·Όν μ μκ³ , μ£Όμ΄μ§ 맀κ°λ³μλ₯Ό λ°μλ€μ¬ μμ
μ μννκ³ κ°μ λ°ννλλ° μ§μ€
λ©μλ
: κ°μ²΄ λλ νμ
μ μμ±μ μ§μ μ μΌλ‘ μ κ·Όν μ μκ³ , ν΄λΉ κ°μ²΄μ μνλ₯Ό λ³κ²½νκ±°λ μμ±μ μ κ·Όνμ¬ μμ
μ μννλ λ° μ¬μ©λλ€.
κ°λ¨ μ 리 βοΈ
ν¨μλ νΉμ ν νμ μ μνμ§ μμΌλ©° λ 립μ μΌλ‘ μ μλκ³ νΈμΆ
λ©μλλ νΉμ ν νμ μ μν΄ μμΌλ©°, ν΄λΉ νμ μ μΈμ€ν΄μ€μ λν΄ μλνκ³ μνλ₯Ό λ³κ²½ν μ μλ ν¨μ
func ν¨μ_μ΄λ¦(μκ·λ¨ΌνΈ_λ μ΄λΈ: νλΌλ―Έν°_νμ
) -> 리ν΄_νμ
{
// ... μ½λ
}
// λ€μ΄λ° 컨벀μ
μΌλ‘ μΉ΄λ©μΌμ΄μ€λ₯Ό μ¬μ©ν©λλ€ (ex- methodName π / method_name π
)
ex)
func sayHi(friend: String) {
print("Hi~ \(friend)!")
}
sayHi(friend: "μνΈ")
// ν¨μμ μ¬μ©
μ°Έκ³ μλ£ : νκΈ°λ² - μ€λ€μ΄ν¬ μΌμ΄μ€, νμ€μΉΌ μΌμ΄μ€, μΉ΄λ© μΌμ΄μ€
func sayHi(to friend: String) {
print("Hi~ \(friend)!")
}
sayHi(to: "μνΈ")
// "to: " -> νΈμΆ μμ μ friend μ¬μ©
func sayHi(_ friend: String) -> String {
return ("Hi~ \(friend)!")
}
print(sayHi("μνΈ"))
//
// μΆλ ₯κ°: Hi~ μνΈ!
μμμ μ νννλ λ°μ΄ν° νμ μΌλ‘, μμμ μ΄ν 6μ리(32λΉνΈ λΆλ μμ)κΉμ§ νν κ°λ₯νλ€.
μμμ μ νννλ λ°μ΄ν° νμ μΌλ‘, μμμ μ΄ν 15μ리(64λΉνΈ λΆλ μμ) μ΄μ νν κ°λ₯νλ€.
μλμ Stringμ μ μΈνλ λ°©λ² μ΄μΈμ
var emptyString: String = ""
μ΄λ¬ν λ°©μμΌλ‘ Stringμ μ¬μ©ν μ μλ€.
var anotherEmptyString = String()
μ¬λ¬ κ°μ νλλ‘ κ·Έλ£Ήνν λ°μ΄ν° νμ μ΄λ€.
let http404Error: (Int, String) = (404, "Not Found")
let (justTheStatusCode, _): (Int, String) = http404Error
print("The status code is \(justTheStatusCode)")
// (justTheStatusCode, _) -> (Int, String)
// justTheStatusCode -> Int, _ -> String
// _ => μ¬μ©νμ§ μμ
// λ°λΌμ Int νμ
μ justTheStatusCodeλ§ μ¬μ©
http404Error.0
http404Error.1
// ννμ μ μ₯λ κ°μ μμλ₯Ό νμ©νμ¬ μ μ₯λ λ°μ΄ν°μ μ κ·Ό
let http200Status: (Int, String) = (statusCode: 200, description: "OK")
// νν λ΄ κ° μμλ§λ€ μ΄λ¦μ μ§μ ν΄μ€ μ μμ
μ μμμμ λ³Ό μ μλ―μ΄ κ΄λ ¨μ± μλ 2~3κ° μ λμ λ°μ΄ν°λ₯Ό λ¬Άμ΄μ μ¬μ©νκΈ° νΈλ¦¬νλ€.
λ€μν λ°μ΄ν° νμ μ κ°μ μμ©ν μ μλ λ°μ΄ν° νμ μ΄λ€.
var anyArray: [Any] = [1,"Hi", true]
var anyValue: Any = 1000
anyValue = "μ΄λ€ νμ
λ μμ© κ°λ₯"
anyValue = 12345.67
// μ»΄νμΌ μλ¬
let doubleValue: Double = anyValue
// Any λ°μ΄ν° νμ
μ΄ Doubleμ ν¬ν¨νλ λμ± ν¬κ΄μ μΈ κ°λ
μ΄λ λ¬Έμ κ° λ°μν¨
Any λ°μ΄ν° νμ μ¬μ©νκΈ° μν΄μλ λ°λμ ν λ³νμ΄ νμνλ€!!
- κΈ°λ³Έ λ°μ΄ν° νμ (Built-in Data Types)
: ν΄λΉ λ°μ΄ν° νμ μ λͺ¨λ κ΅¬μ‘°μ²΄λ‘ κ΅¬νλμ΄ μμ
- μ¬μ©μ μ μ λ°μ΄ν° νμ (Custom Data Types)
: ν΄λΉ λ°μ΄ν° νμ μ κ°λ°μκ° μ§μ νμ μ μ μ
μ¬μ©μ μ μ λ°μ΄ν° νμ μ λν΄μλ λͺ λ² λ μ½μ΄λ³΄κΈ°!! π₯²
Swiftμμ λ°μ΄ν° νμ μ μ격νκ² λΆλ₯νκΈ° λλ¬Έμ, μ½λ μμ± μ λ°μ΄ν° νμ μ λͺ ννκ² μ¬μ©νκ² λλ€. λν μλ‘ λ€λ₯Έ νμ λΌλ¦¬μ μ°μ°μ΄ λΆκ°λ₯νκΈ°μ νμ μμ μ±μ΄ λ§€μ° λλ€!
λ§μ½ λ€λ₯Έ λ°μ΄ν° νμ μ λ³μλ€μ λνκ±°λ λΉΌλ λ±μ μ°μ°νκ³ μΆλ€λ©΄, νλμ ν΅μΌλ λ°μ΄ν° νμ μΌλ‘ νλ³νμ ν΄μ£Όμ΄μΌ νλ€.
let val1: Int = 10
let val2: Double = 10.0
val1 + Int(val2)
// Double νμ val2λ₯Ό Int νμΌλ‘ λ³ν
Swiftλ λμ΄μ°κΈ°λ μ κ²½μ¨μΌ νλ μΈμ΄μ΄λ€!
a - b
// a λΉΌκΈ° b
a -b
// aμ -b
μ»΄νμΌ μλ¬κ° λ°μνμ§ μλλ‘ λμ΄μ°κΈ°λ₯Ό μ£Όμνμ!! π¨
μ¬μ© λ°©λ²μ Cμ λ§€μ° μ μ¬νμμ§λ§, λͺ κ°μ§ μ°¨μ΄μ μ΄ μμ΄ μ 리ν΄λ³΄μλ€.
λͺ¨λ μΌμ΄μ€κ° μ μ©λμ§ μλ κ²½μ°μ μ€νλλ default
λ νμ λ§μ§λ§μ νμ
fallthrough
switch 쑰건 μ€ νΉμ μΌμ΄μ€μ ν΄λΉλμ΄ ν΄λΉ κ΅¬λ¬Έμ΄ μ€νλ λ€, λ€μ μΌμ΄μ€ λΈλμ μ€ν
var number = 5
switch number {
case 5:
print("5")
fallthrough
// ν΄λΉ μΌμ΄μ€μ κ΅¬λ¬Έμ΄ μ€νλ μ΄νμλ 무쑰건 λ€μλΈλμ μ€νν¨
default:
print("default")
}
// μΆλ ₯ κ²°κ³Ό
// 5
// default
enum Day {
case monday, tuesday, wednesday, thursday, friday, saturday, sunday
}
func activities(for day: Day) {
switch day {
case .monday:
print("μμμΌ: νμ¬ νμ")
case .tuesday:
print("νμμΌ: μ΄λ κ°κΈ°")
case .wednesday:
print("μμμΌ: μ±
μ½κΈ°")
case .thursday:
print("λͺ©μμΌ: μΉκ΅¬μ λ§λκΈ°")
case .friday:
print("κΈμμΌ: μν 보기")
case .saturday:
print("ν μμΌ: μΌννκΈ°")
case .sunday:
print("μΌμμΌ: κ°μ‘±κ³Ό μκ° λ³΄λ΄κΈ°")
}
}
activities(for: .monday)
activities(for: .friday)
μ΄κ±°ν
enum
μ μ¬μ©νλ€λ μ μ μ΄ν΄νμΌλ,enum
μ΄κ²μ μ²μ λ΄μ μμ§ λμ§ λͺ¨λ₯΄κ² λ€...
λ°°μ΄μ νμ©νμ¬ μ½λλ₯Ό ꡬμ±ν μ μκ³ , μλμ μμμ²λΌ μ¬μ©ν μ μλ€!
let students = ["Tom": 2, "Harry": 4, "Sarah": 1]
for (name, grade) in students {
print("\(name) μ \(grade) νλ
μ΄μΌ")
}
// μΆλ ₯κ°:
// Tom μ 2 νλ
μ΄μΌ
// Harry μ 4 νλ
μ΄μΌ
// Sarah μ 1 νλ
μ΄μΌ