반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
Tags
- pull down button
- todolist
- 알고리즘
- URLSession
- Wil
- 메모장만들기
- 앱개발
- 오토레이아웃
- 계산기만들기
- Xcode
- 커맨드라인툴
- 개발자
- 날짜처리
- 플러터
- UISlider
- pop up button
- strikeThrough
- userdefaults
- DART
- Storyboard Reference
- 스파르타코딩클럽
- 내일배움캠프
- 코드스니펫
- ios
- Flutter
- Storyboard
- 내배캠
- ListTile
- attributedText
- Swift
Archives
- Today
- Total
이리메라 갖다가
[Swift] 호텔 객실 예약 프로그래밍(1) : Array, sorted(), 랜덤값 추출 본문
728x90
반응형
1. 배열 sorted
일반적으로 배열, 딕셔너리는 값을 저장하고 print 할 때 무작위로 나온다.
let roomSpec = ["1번방" : 10000, "2번방" : 20000, "3번방" : 30000, "4번방" : 40000, "5번방" : 50000]
for (roomNumber, price) in roomSpec {
print("\(roomNumber) : \(price)원")
}
딕셔너리 특징상 value 값은 동일할 수 있으니, key 값을 기준으로 정렬을 해준다.
현재 key 값이 String 형태인데 Int 형으로 바꾸어 좀 더 쉽게 정렬하는 코드를 만들 수 있다.
(String 형으로 정렬하는 코드로 작업했는데, 계속 적용이 안되고 에러가 나서 포기함 ㅠ)
수정된 코드
let roomSpec = [1 : 10000, 2 : 20000, 3 : 30000, 4 : 40000, 5 : 50000]
let sortedRoomSpec = roomSpec.keys.sorted()
for roomNumber in sortedRoomSpec {
if let price = roomSpec[roomNumber] {
print("\(roomNumber)번방 : \(price)원")
}
}
roomSpec 딕셔너리는 [Int:Int] 형태이므로, <딕셔너리>.keys.sorted() 코드를 이용하여 정렬하였다.
2. 랜덤값 추출(+ 조건)
100,000 ~ 500,000 사이 랜덤한 숫자를 추출해서 지갑에 넣어주는 코드를 짜는데, 1만원 단위로 지급을 해야하는 조건이 존재한다.
일단 랜덤 숫자를 뽑는 코드는 간단하다.
Int.random(in: 범위)
뽑는 숫자는 원단위로 Int 형으로 추출하였고,
해당 범위 안에서 조건식을 넣는 방법을 못찾아서 나는 10~50 사이의 값을 추출해서 10,000을 곱했다.
print("<랜덤 금액 받기>")
let money = Int.random(in: 10...50)
myWallet += (money * 10000)
print("랜덤 지급 금액 : \(money*10000)원")
print("현재 나의 잔고 : \(myWallet)원")
그리고 랜덤하게 뽑은 금액은 내 잔고에 지급되므로 랜덤 금액 받기를 누를때마다 누적되도록 작성했다.
3. 개선사항
3-1. 계산기
- 등호를 누르기 전, 두번째 연산자를 눌렀을 때 앞선 계산이 디스플레이에 보여져야 함
- 연산자의 우선순위를 따져, 곱셈과 나눗셈 연산자를 누를 경우 앞선 계산보다 먼저 수행되어야 함
3-2. 객실 예약 프로그램
- 번호 입력 후 다시 동일한 번호를 누르거나 그보다 앞선 번호를 입력하면 else 값이 나옴
- 번호 선택 이전으로 돌아가는 기능 구현
- 날짜 입력 형태 검증(YYYY-MM-DD)
- 예약 날짜 저장(체크인, 체크아웃 나눠서 저장)
- 방 개수를 한정하여, 예약이 꽉 찼을 시 예약이 불가능하다 또는 객실 정보를 불러오지 않기
728x90
반응형
'TIL' 카테고리의 다른 글
[Swift] 클로저(Closure), enumerated() (0) | 2023.07.24 |
---|---|
[Swift] 호텔 객실 예약 프로그래밍(2) : date, 날짜 다루기 (0) | 2023.07.21 |
[Swift] 나만의 계산기 만들기(2) : 나머지 연산자, 소수점 처리 (0) | 2023.07.19 |
[Swift] 나만의 계산기 만들기(1) : Xcode 다루기, 스토리보드, IBAction (0) | 2023.07.18 |
[Swift] 기초문법 강의 복습 (2) | 2023.07.17 |