23.08.03 IBAction&ViewController 의 개념과 알고리즘 문자열정렬하기 문제
먼저 IBAction 을 알려면 IBOutlet 부터 알아야한다.
IBOutlet의 예로 오늘 내가만든 주사위던지기 앱 화면을 가져와보겠다.
IBOutlet 이란 내가 만든 오브젝트들을 코딩으로 구현하기위해
앞으로 이 오브젝트를 코드로 구현할 수 있다고 선언해주는것이다.
그렇게 아웃렛을 만들어 냈다면 ,
이제 그 아웃렛 ( 각각의 오브젝트 ) 에 액션을 넣어주기위해서
IBAction함수를 넣어주는것이다.
액션이라하면 버튼누르기 , 줌 , 줌아웃 이런것들이 있겠지?
그렇게 해서 오늘 만든 주사위 던지기 어플이다.
//
// ViewController.swift
// Dicee-iOS13
//
// Created by Angela Yu on 11/06/2019.
// Copyright © 2019 London App Brewery. All rights reserved.
//
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var diceImageView1: UIImageView!
@IBOutlet weak var diceImageView2: UIImageView!
var leftDIceNumber = 1
var rightDiceNumber = 0
//#imageLiteral() 입력해야 이미지선택창 나옴.
@IBAction func rollButtonPressed(_ sender: UIButton) {
diceImageView1.image = [ #imageLiteral(resourceName: "DiceOne"), #imageLiteral(resourceName: "DiceTwo"), #imageLiteral(resourceName: "DiceThree"), #imageLiteral(resourceName: "DiceFour"), #imageLiteral(resourceName: "DiceFive"), #imageLiteral(resourceName: "DiceSix") ][Int.random(in: 0...5)]
diceImageView2.image = [ #imageLiteral(resourceName: "DiceSix"), #imageLiteral(resourceName: "DiceFive"), #imageLiteral(resourceName: "DiceFour"), #imageLiteral(resourceName: "DiceThree"), #imageLiteral(resourceName: "DiceTwo"), #imageLiteral(resourceName: "DiceOne") ][Int.random(in: 0...5)]
leftDIceNumber += 1
rightDiceNumber += 1
}
}
⬆️주사위 어플 구현 코드.
그리고 오늘 알고리즘문제 3문제를 고민하면서 1문제밖에 풀지 못하였다.
점점 난이도가 올라갈수록 머리가띵하지만 , 문제에대해 생각해 보는 것 만으로도 의미가 있다는 생각에
계속 도전하고있다.
그리고 그 풀지못한 두문제중 다른 팀원분의 풀이를 보던중 정말 기발한 풀이방법을 보아서 기록해두려고한다.
일단 my_string 이라는 매개변수 안에 hi 같은 문자열과 123같은 숫자가 뒤죽박죽 섞여있는데,
거기에서 숫자만골라내어 오름차순 정렬해주는문제이다.
풀이방식을 스스로 생각했을때에는
h i 1 2 3 9 2를 다 각각의 array 의 character값으로 만들어서 for문으로 돌리고
그중에서 숫자만 추려내고 숫자를 sorted시켜 오름차순 정렬시킨다.
라는 생각을 했었는데 도통 코드구현이 잘 안되었었는데
팀원분중에 한분이 푸신 방법이 기가막혔다.
import Foundation
func solution(_ my_string:String) -> [Int] {
let testList = my_string.map{String($0)}
let answer2 : [Int] = testList.compactMap {str in Int(str)}
print(testList.compactMap {str in Int(str)})
return answer2.sorted(by:<)
}
딱 봐도 내가 생각한 구현방식보다 훨씬 코드자체도 간결해보인다
( 난이도는 있어보이지만 )
이 팀원분은 my_string 안에서 h i 같은 string 값을 아예 nil 값으로 추출해 버리도록 유도해서
버려버리고 , nil 값이 아닌 int값들을 모아 sorted 로 정렬해 버렸다.
이 코드 보고 기가막혀서 코드를풀어보며 공부해봐야 할 것 같다.