https://www.acmicpc.net/problem/2578
난이도
실버 4
사용언어
Swift
카테고리
구현 + 시뮬레이션
풀이과정
이중 Int 배열의 빙고판을 만들고,
행, 열, 왼쪽 대각, 오른쪽 대각의 주어진 수를 카운팅 할 수 있는 변수를 만들어 준다.
입력된 수를 빙고판을 통해 좌표를 얻고, 해당 좌표를 통해 행과 열의 변수에 카운팅 한다.
만약, 좌표의 x, y 값이 같거나 둘의 합이 4인 경우 대각의 위치한 수이기 때문에 대각 변수에 추가로 카운팅 한다.
변수가 값이 5가 되는 변수가 3개 이상이 되었을 때 종료하면 끝.
var bingoBoard: [[Int]] = []
var visitedY: [Int] = Array(repeating: 0, count: 5)
var visitedX: [Int] = Array(repeating: 0, count: 5)
var visitedD1 = 0
var visitedD2 = 0
for _ in 0..<5 {
let y = readLine()!.split(separator: " ").map { Int($0)! }
bingoBoard.append(y)
}
var count = 0
var result = 0
for _ in 0..<5 {
let numbers = readLine()!.split(separator: " ").map { Int($0)! }
for number in numbers {
if count >= 3 { break }
result += 1
let y = bingoBoard.firstIndex { $0.contains(number) }!
let x = bingoBoard[y].firstIndex(of: number)!
visitedY[y] += 1
if visitedY[y] == 5 { count += 1 }
visitedX[x] += 1
if visitedX[x] == 5 { count += 1 }
if y == x {
visitedD1 += 1
if visitedD1 == 5 { count += 1 }
}
if y + x == 4 {
visitedD2 += 1
if visitedD2 == 5 { count += 1 }
}
}
if count >= 3 { break }
}
print(result)
'코테' 카테고리의 다른 글
[이분 탐색] 백준 실버2 2805번: 나무 자르기(Swift) (0) | 2023.05.12 |
---|---|
[완전 탐색] 백준 브론즈2 2231번: 분해합(Swift) (0) | 2023.05.12 |
[DFS] 백준 9466번: 텀 프로젝트(Swift) (0) | 2022.12.03 |
[DFS] 백준 1068번: 트리(Swift) (0) | 2022.11.18 |
[BFS + 구현] 백준 2573번: 빙산 (0) | 2022.11.14 |