Swift Data Structure And Algorithm/Brute-Force Algorithm

baseBall game

youngjaeLee1026 2022. 2. 20. 17:59

1. ๋ฌธ์ œ

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2022-02-20 17 56 01

2. ์ž…์ถœ๋ ฅ

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2022-02-20 17 56 07

3. ์ž…์ถœ๋ ฅ ์˜ˆ์‹œ

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2022-02-20 17 56 11

4. ๋ฌธ์ œ ์„ค๊ณ„

  1. 1 ~ 9 ๊นŒ์ง€์˜ ์„œ๋กœ ๋‹ค๋ฅธ ์ˆ˜๋กœ ์ด๋ฃจ์–ด์ง„ ์„ธ์ž๋ฆฌ ์ˆซ์ž๋ฅผ ๊ตฌ์„ฑ
  2. ์ž…๋ ฅ ๋ฐ›์€ ์ •๋ณด๋ฅผ ํ†ตํ•ด Strike์™€ Ball์˜ ๊ฐœ์ˆ˜๋ฅผ 1๋ฒˆ์—์„œ ๊ตฌ์„ฑํ•œ ์ˆ˜์™€ ๋น„๊ต๋ฅผ ํ†ตํ•ด ๊ตฌํ•จ
  3. 2๋ฒˆ์—์„œ ๊ตฌํ•œ Strike์™€ Ball์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ž…๋ ฅ๋ฐ›์€ Strike์™€ Ball์˜ ๊ฐœ์ˆ˜์™€ ๊ฐ™์€์ง€ ๋น„๊ตํ•จ
  4. ๊ทธ ๊ฒฐ๊ณผ๊ฐ€ ๊ฐ™๋‹ค๋ฉด ์ •๋‹ต ๊ฐœ์ˆ˜๋ฅผ ์นด์šดํŠธํ•จ

5. ์ „์ฒด ์ฝ”๋“œ

//
//  main.swift
//  BaseBallGame
//
//  Created by ์ด์˜์žฌ on 2022/02/19.
//MARK: - baseball game

//MARK: - Frameworks
import Foundation

//MARK: - Types
struct BaseBallGame {
    //MARK: - Properties
    var strikeCount: Int
    var ballCount: Int
    var candidateCount: Int

    //MARK: - Initializer
    init(_ strikeCount: Int, _ ballCount: Int, _ candidateCount: Int) {
        self.strikeCount = strikeCount
        self.ballCount = ballCount
        self.candidateCount = candidateCount
    }
}

//MARK: - Functions
func solution() -> Void {
    //MARK: - input
    guard let N: Int = Int(readLine() ?? "0") else { return }
    let minNumber: Int = 1
    let maxNumber: Int = 9

    var baseBallGame: BaseBallGame = BaseBallGame(0, 0, 0)
    var answerInfo: [[Int]] = []

    for _ in 0..<N {
        guard let input = readLine()?.components(separatedBy: " ") else { return }
        answerInfo.append(input.map { Int($0) ?? 0 })
    }

    //MARK: - process
    for i in minNumber...maxNumber {
        for j in minNumber...maxNumber {
            for k in minNumber...maxNumber {
                if i != j && j != k && i != k {
                    var flag: Bool = false

                    for data in answerInfo {
                        let numberI: Int = data[0] / 100
                        let numberJ: Int = (data[0] / 10) % 10
                        let numberK: Int = data[0] % 10
                        var strikeCount: Int = 0
                        var ballCount: Int = 0

                        if i == numberI {
                            strikeCount += 1
                        }

                        if j == numberJ {
                            strikeCount += 1
                        }

                        if k == numberK {
                            strikeCount += 1
                        }

                        if i == numberJ || i == numberK {
                            ballCount += 1
                        }

                        if j == numberI || j == numberK {
                            ballCount += 1
                        }

                        if k == numberI || k == numberJ {
                            ballCount += 1
                        }

                        baseBallGame.strikeCount = strikeCount
                        baseBallGame.ballCount = ballCount

                        if baseBallGame.strikeCount != data[1] || baseBallGame.ballCount != data[2] {
                            flag = true
                            break
                        }
                    }

                    baseBallGame.candidateCount += flag ? 0 : 1
                }
            }
        }
    }

    //MARK: - output
    print(baseBallGame.candidateCount)
}
solution()

์ „์ฒด์ฝ”๋“œ๋Š” ์—ฌ๊ธฐ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

'Swift Data Structure And Algorithm > Brute-Force Algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

seat  (0) 2022.02.20
tetris  (0) 2022.02.19
bingo  (0) 2022.02.15
ํ–‰๋ ฌ ๋’ค์ง‘๊ธฐ  (0) 2022.01.29
ํ–‰๋ ฌ ๋’ค์ง‘๊ธฐ 2  (0) 2022.01.29