Swift 서브스크립트 문제 관련해서 질문이 있습니다.

조회수 360회

문제입니다.

주석 아래에 서브스크립트를 작성해야합니다. 일단 제가 생각한 것은

  1. 정수를 받는 서브스크립트와 문자열을 받는 서브스크립트 두 개를 생성해야 한다.
  2. 하단쪽에 서브스크립트의 값을 읽는 부분에 옵셔널 바인딩한 것으로 보아 옵셔널 타입으로 리턴한다.

입니다. 그런데 접근을 할려니 어떻게 구현해야할지 모르겠네요. 제가 감이 안잡히는 부분은

  1. 서브스크립트는 어떤 타입을 리턴해야 하는가?
  2. 어떻게 서브스크립트 매개변수 부분을 이용해서 firstTeam의 number로 접근하는가?

인 것 같습니다. 아직 많이 부족해서 더 공부를 해야하는데 안풀리니까 조바심이 나네요.

도움 부탁드립니다.

import UIKit

struct Player {
    let number: Int
    let name: String
}

struct Team {
    let name: String
    let squad: [Player]

    // 여기에서 서브스크립트를 구현해 주세요.
}

// 아래에 있는 코드는 수정하지 마세요.
let firstTeam = [
    Player(number: 1, name: "Hugo Lloris"),
    Player(number: 3, name: "Danny Rose"),
    Player(number: 4, name: "Toby Alderweireld"),
    Player(number: 5, name: "Jan Vertonghen"),
    Player(number: 7, name: "Heung-Min Son"),
    Player(number: 10, name: "Harry Kane"),
    Player(number: 12, name: "Victor Wanyama"),
    Player(number: 20, name: "Dele Alli"),
    Player(number: 23, name: "Christian Eriksen"),
    Player(number: 33, name: "Ben Davies")
]
let tot = Team(name: "Tottenham Hotspur", squad: firstTeam)


var name: String?
var number: Int?

if let player = tot[7] {
    name = player.name
}

if let player = tot["David de Gea"] {
    number = player.number
}

print(name == .some("Heung-Min Son") && number == nil)
  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 공부하며 풀어 봤습니다. 문제에서 요구하는 정답인지는 잘 모르겠는데, 일단 주어진 테스트는 통과하네요.

    
    struct Team {
        let name: String
        let squad: [Player]
    
        // TODO : 여기에서 서브스크립트를 구현해 주세요.
        //---------------------------------------------
        subscript(number: Int) -> Player? {
            for player in squad {
                if player.number == number {
                    return player
                }
            }
            return nil
        }
    
        subscript(name: String) -> Player? {
            for player in squad {
                if player.name == name {
                    return player
                }
            }
            return nil
        }
        //---------------------------------------------
    }
    
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)