Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
//: Playground - noun: a place where people can play

import UIKit

//배열의 선언
var meetingRoom:Array<String> = ["A","B","P","S","E"]
var groups:[Int] = [10, 8, 8, 6]

meetingRoom += ["R"]

//배열의 추가1
var currentSpeed = 20
var speedHistory:[Int] = []
speedHistory += [currentSpeed]
let gps = 114.1
let gps2 = 220.2

//배열의 추가2
speedHistory.append(Int(gps))

//배열의 추가3
speedHistory.insert(Int(gps2), at: 0)

speedHistory[0]
speedHistory.first

//배열의 복제. 바로 되지 않고 둘 중 하나의 값이 변경이 될 때 복제된다
let historyBackup = speedHistory
speedHistory += [130]
historyBackup
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<playground version='5.0' target-platform='ios'>
<timeline fileName='timeline.xctimeline'/>
</playground>

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
//: Playground - noun: a place where people can play

import UIKit

//Dictionary. [key:value]
var roomCapacity:[String:Int] = ["A":10, "B":20, "P":8, "S":10, "E":30]

//딕셔너리의 추가
roomCapacity["R"] = 40
roomCapacity["A"]

//let roomNames = roomCapacity.keys
//let capacity = roomCapacity.values

//딕셔너리에서 값을 배열로 가지고 오는 방법
let roomNames = [String](roomCapacity.keys)
let capacity = [Int](roomCapacity.values)

//set. 순서를 가지지 않는 컬렉션. 집합연산이 필요한 경우. intersection, Subtract, Union, symmetricDifference
let subway2:Set = ["사당", "방배", "서초", "교대", "강남", "삼성", "신도림", "신림"]
let subway3:Set = ["사당", "블라", "몰리", "서초", "강남", "모름", "가라", "거나나"]

let transfer = subway2.intersection(subway3)

//영웅들로 구성된 파티를 만들어, 상대방의 파티와 싸우는 게임을 만드려고 합니다. 기존 파티 heros에 새로운 영웅 newHero를 파티의 맨 앞에 영입하는 완성하세요. heros에 새로운 항목을 추가할 수 있도록 만든 뒤, newHero를 맨 앞에 추가하면 됩니다.
var heros = ["프린스", "마녀", "해골 군대", "고블린 통"]
let newHero = "흑룡"

heros.insert(newHero, at: 0)

print(heros)

//상대방의 영웅 파티가 나타났습니다. 상대방과 겨룰 때에는 서로 겹치는 영웅들끼리만 대전을 할 수 있습니다. 내가 가진 영웅 heros과 상대의 영웅 oppHeros끼리 겹치는 영웅으로 이루어진 Set인 intersectHeros를 구하세요.
let heros2:Set = ["프린스", "마녀", "해골 군대", "고블린 통"]
let oppHeros2:Set = ["자이언트 해골", "고블린 통", "대형석궁", "프린스"]

// 상대와 겹치는 영웅들로 이뤄진 set을 완성하세요
let intersectHeros = heros2.intersection(oppHeros2)

print(intersectHeros)
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<playground version='5.0' target-platform='ios'>
<timeline fileName='timeline.xctimeline'/>
</playground>

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

55 changes: 55 additions & 0 deletions 강의 프로젝트 파일/ControlFlow.playground/Contents.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
//: Playground - noun: a place where people can play

import UIKit

//for문과 if문
let subway2:Set = ["사당", "방배", "서초", "교대", "강남", "삼성", "신도림", "신림"]
let subway3:Set = ["사당", "블라", "몰리", "서초", "강남", "모름", "가라", "거나나"]
let transfer = subway2.intersection(subway3)

if transfer.count > 0 {
print("환승역은 \(transfer)입니다")
} else {
print("환승역은 없습니다")
}

for station in subway3 {
print("이번 역은 \(station)입니다")
}

//switch문
//딕셔너리를 for문으로 돌릴 때, 튜플로 받아 올 수 있다.
var roomCapacity:[String:Int] = ["A":10, "B":20, "P":8, "S":10, "E":30, "G":40, "C":4]

for (roomName, capacity) in roomCapacity {
let roomDescription:String
switch capacity {
case 4:
roomDescription = "\(roomName)은 스터디룸이며 정원은 \(capacity)명입니다."
case 5...10:
roomDescription = "\(roomName)은 팀세미나룸이며 정원은 \(capacity)명입니다."
case 11...30:
roomDescription = "\(roomName)은 그룹세미나룸이며 정원은 \(capacity)명입니다."
case _ where capacity > 30:
roomDescription = "\(roomName)의 정원은 \(capacity)이며 별도의 신청이 필요합니다."
default:
roomDescription = "\(roomName)의 정보를 다시 확인해주세요."
}
}


//그마트에서는 아이템 수량에 따라 계산 카운터를 안내하는 차세대 카트를 도입하려고 합니다. 카트에 담긴 맥주 수량에 따라3병 이하는 소량 계산대로 보내고, 4병부터 50병까지는 일반 계산대로 보내고, 51병 부터 100병까지의 구매는 매니저에게 연락하고, 100병 이상은 경찰에 신고하는 switch문을 완성해 주세요.

typealias ShopingItem = (name:String, amount:Int)
let cart = ShopingItem("beer", 1)

switch cart {
case ("beer", 0...3) : //맥주 3병 이하
print("Guide to small item counter")
case ("beer", 51...100) : //맥주 51병이상 100병 까지
print("Call manager")
case ("beer", let amount) where amount > 100 : //맥주 100병 초과
print("Call police")
default: //나머지(맥주 4병 이상 50병 이하)
print("Make wait in line")
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<playground version='5.0' target-platform='ios'>
<timeline fileName='timeline.xctimeline'/>
</playground>

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
//: Playground - noun: a place where people can play

import UIKit

/*TaskType이라는 이너머레이션에 Associated Value를 설정
Task 구조체 안에 선언한 doBasicTask( )라는 메소드
Task의 타입 값에 따라 switch 문을 통해 각각 다른 작업을 수행
.Call 이면 전화 번호를 number 상수로
.Report이면 receiver와 time이라는 값
.Meet과 .Support의 경우 적당한 상수값
*/

struct Task {
var title:String
var time:Int?

var owner:Employee
//var participant:Employee?

var type:TaskType
enum TaskType {
case Call(number:String)
case Report(to:Employee, when:String)
case Meet(with:Employee, location:String)
case Support(who:Employee, duration:Int)

var typeTitle:String {
get {
let titleString:String
switch self {
case .Call:
titleString = "Call"
case .Report:
titleString = "Report"
case .Meet:
titleString = "Meet"
case .Support:
titleString = "Support"
}
return titleString
}
}
}

init(type:TaskType, owner:Employee) {
self.type = type
self.title = type.typeTitle
self.owner = owner
self.time = nil
//self.participant = nil
}

func doBasicTask() -> String {
let taskDescription:String
switch type {
case .Call(let number):
taskDescription = "\(owner.name!) make a call to \(number)"
case .Report(let reciever, let time):
taskDescription = "\(owner.name!) report to \(reciever.name!) at \(time)"
case .Meet(let participant, let location):
taskDescription = "\(owner.name!) meet \(participant.name!) at \(location)"
case .Support(let taskOwner, let duration):
taskDescription = "\(owner.name!) support \(taskOwner.name!) for \(duration) days"
default:
taskDescription = "Need more information"
}
return taskDescription
}
}

class Employee {
var name:String?
var phoneNumber:String?
var boss:Employee?

init (name:String) {
self.name = name
}

init(name:String, phone:String) {
self.name = name
self.phoneNumber = phone
}

func report() {
if let myBoss = boss {
print("\(name!) reported to \(myBoss).")
} else {
print("\(name!) don't have a boss.")
}
}

func callTaskToBoss() -> Task? {
if let myBoss = boss, let callTo = myBoss.phoneNumber {
let callTask = Task(type: .Call(number: callTo), owner:self)
return callTask
}
return nil
}
}
var todayTask:[Task] = []

let me:Employee = Employee(name: "Alex", phone:"010-3398-8792")
let toby = Employee(name: "Toby")
toby.phoneNumber = "010-3392-8765"
me.boss = toby

var reportTask = Task(type:.Report(to:toby, when:"afternoon"), owner:me)
reportTask.doBasicTask()
todayTask += [reportTask]

if let callTask = me.callTaskToBoss() {
todayTask += [callTask]
callTask.doBasicTask()
}

todayTask[1].time = 15*60

print("Today task = \(todayTask)")
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<playground version='5.0' target-platform='ios'>
<timeline fileName='timeline.xctimeline'/>
</playground>

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<Timeline
version = "3.0">
<TimelineItems>
<LoggerValueHistoryTimelineItem
documentLocation = "file:///Users/djhwang/Desktop/%E1%84%89%E1%85%AE%E1%84%8B%E1%85%A5%E1%86%B8/%E1%84%80%E1%85%A1%E1%86%BC%E1%84%8B%E1%85%B4%20%E1%84%91%E1%85%B3%E1%84%85%E1%85%A9%E1%84%8C%E1%85%A6%E1%86%A8%E1%84%90%E1%85%B3%20%E1%84%91%E1%85%A1%E1%84%8B%E1%85%B5%E1%86%AF/Enum%20associated%20value.playground#CharacterRangeLen=1&amp;CharacterRangeLoc=3209&amp;EndingColumnNumber=30&amp;EndingLineNumber=118&amp;StartingColumnNumber=29&amp;StartingLineNumber=118&amp;Timestamp=530436256.696473"
selectedRepresentationIndex = "0"
shouldTrackSuperviewWidth = "NO">
</LoggerValueHistoryTimelineItem>
<LoggerValueHistoryTimelineItem
documentLocation = "file:///Users/djhwang/Desktop/%E1%84%89%E1%85%AE%E1%84%8B%E1%85%A5%E1%86%B8/%E1%84%80%E1%85%A1%E1%86%BC%E1%84%8B%E1%85%B4%20%E1%84%91%E1%85%B3%E1%84%85%E1%85%A9%E1%84%8C%E1%85%A6%E1%86%A8%E1%84%90%E1%85%B3%20%E1%84%91%E1%85%A1%E1%84%8B%E1%85%B5%E1%86%AF/Enum%20associated%20value.playground#CharacterRangeLen=1&amp;CharacterRangeLoc=3209&amp;EndingColumnNumber=30&amp;EndingLineNumber=118&amp;StartingColumnNumber=29&amp;StartingLineNumber=118&amp;Timestamp=530436256.696645"
selectedRepresentationIndex = "0"
shouldTrackSuperviewWidth = "NO">
</LoggerValueHistoryTimelineItem>
<LoggerValueHistoryTimelineItem
documentLocation = "file:///Users/djhwang/Desktop/%E1%84%89%E1%85%AE%E1%84%8B%E1%85%A5%E1%86%B8/%E1%84%80%E1%85%A1%E1%86%BC%E1%84%8B%E1%85%B4%20%E1%84%91%E1%85%B3%E1%84%85%E1%85%A9%E1%84%8C%E1%85%A6%E1%86%A8%E1%84%90%E1%85%B3%20%E1%84%91%E1%85%A1%E1%84%8B%E1%85%B5%E1%86%AF/Enum%20associated%20value.playground#CharacterRangeLen=22&amp;CharacterRangeLoc=3127&amp;EndingColumnNumber=26&amp;EndingLineNumber=113&amp;StartingColumnNumber=4&amp;StartingLineNumber=113&amp;Timestamp=530436256.696751"
lockedSize = "{390.42041015625, 50}"
selectedRepresentationIndex = "0"
shouldTrackSuperviewWidth = "NO">
</LoggerValueHistoryTimelineItem>
<LoggerValueHistoryTimelineItem
documentLocation = "file:///Users/djhwang/Desktop/%E1%84%89%E1%85%AE%E1%84%8B%E1%85%A5%E1%86%B8/%E1%84%80%E1%85%A1%E1%86%BC%E1%84%8B%E1%85%B4%20%E1%84%91%E1%85%B3%E1%84%85%E1%85%A9%E1%84%8C%E1%85%A6%E1%86%A8%E1%84%90%E1%85%B3%20%E1%84%91%E1%85%A1%E1%84%8B%E1%85%B5%E1%86%AF/Enum%20associated%20value.playground#CharacterRangeLen=24&amp;CharacterRangeLoc=3004&amp;EndingColumnNumber=0&amp;EndingLineNumber=109&amp;StartingColumnNumber=1&amp;StartingLineNumber=108&amp;Timestamp=530436256.696862"
lockedSize = "{258.67041015625, 50}"
selectedRepresentationIndex = "0"
shouldTrackSuperviewWidth = "NO">
</LoggerValueHistoryTimelineItem>
</TimelineItems>
</Timeline>
Loading