요구사항 분석
구현 목표
입력값
- 빙고판
board
: Int
형 2차원 배열 5x5 사이즈
- 사회자가 부르는 수
numList
: Int
형 2차원 배열 5x5 사이즈
함수 요구 기능
- 같은 가로줄, 세로줄 또는 대각선 위에 있는 5개의 모든 수가 지워지는 경우를 카운트하여
bingoCount
에 저장한다.
- 사회자가 부른 숫자를 입력 받아, 숫자의 위치를 보드에 기록하는
bingo(_ num: Int)
메서드를 구현한다.
- 빙고 기록은
isChecked
라는 Bool
타입의 2차원배열에서 진행된다. board
를 순회하며 부른 숫자의 좌표를 찾아 isChecked
에 true
로 입력한다.
- 숫자를 외칠 때마다
board
를 순회하며 빙고 개수를 세는 checkBingo
메서드를 구현한다.
- 가로 행, 세로 열, 오른쪽/왼쪽 대각선을 검사한다.
- 각 행, 열 또는 대각선에 있는 요소끼리 Bool 연산을 하여 연산값이 true일 경우,
bingoCount
를 1증가한다
- 숫자를 부를 때마다 빙고 개수를 검사한다.
bingoCount
가 3이상이 될 경우에, 외친 숫자의 순번을 출력한다.
키워드
전체코드
import Foundation
var bingoCount: Int = 0
var answer: Int = 0
var board: [[Int]] = [[Int]](repeating: [Int](repeating: 0, count: 5), count: 5)
var isChecked: [[Bool]] = [[Bool]](repeating: [Bool](repeating: false, count: 5), count: 5)
func bingo(_ num: Int) {
for i in 0..<board.count {
for j in 0..<board[i].count {
if board[i][j] == num {
isChecked[i][j] = true
return
}
}
}
}
func checkBingo() {
bingoCount = 0
var isBingo: Bool = true
for i in 0..<isChecked.count {
isBingo = true
for j in 0..<isChecked[i].count {
isBingo = isBingo && isChecked[i][j]
}
if (isBingo) {
bingoCount += 1
}
}
for i in 0..<isChecked.count {
isBingo = true
for j in 0..<isChecked[i].count {
isBingo = isBingo && isChecked[j][i]
}
if (isBingo) {
bingoCount += 1
}
}
isBingo = true
for i in 0..<5 {
for j in 0..<5 where i + j == 4 {
isBingo = isBingo && isChecked[i][j]
}
}
if (isBingo) {
bingoCount += 1
}
isBingo = true
for i in 0..<5 {
for j in 0..<5 where i == j {
isBingo = isBingo && isChecked[i][j]
}
}
if (isBingo) {
bingoCount += 1
}
}
func main() {
var numList: [[Int]] = [[Int]](repeating: [Int](repeating: 0, count: 5), count: 5)
for index in 0..<board.count {
board[index] = readLine()!.components(separatedBy: " ").map {
Int(String($0))!
}
}
for index in 0..<numList.count {
numList[index] = readLine()!.components(separatedBy: " ").map {
Int(String($0))!
}
}
for num in numList {
if (bingoCount >= 3) { break };
for n in num {
answer += 1
bingo(n)
checkBingo()
if (bingoCount >= 3) { break };
}
}
print(answer)
}
main()