IOS [ Swift ]

23.08.03 IBAction&ViewController 의 개념과 알고리즘 문자열정렬하기 문제

oong2 2023. 8. 3. 23:21

먼저 IBAction 을 알려면 IBOutlet 부터 알아야한다.

 

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 로 정렬해 버렸다.

 

이 코드 보고 기가막혀서 코드를풀어보며 공부해봐야 할 것 같다.