💡문제접근
- 처음엔 4개의 함수를 별도로 만들어 우하향 대각선의 빙고 여부, 좌상향 대각선의 빙고 여부, 가로선의 빙고 여부, 세로선의 빙고 여부를 모두 체크해 빙고판의 라인의 개수가 3개 이상이 되는 시점일 때 값을 출력하는 방식으로 접근했지만 빙고 여부를 판별하는 함수의 작동에서 문제가 있었는지 제대로 해결되지 않았고 결국 여러 개의 함수를 작성하기보다는 하나의 함수 안에 4가지 기능을 구현하는 방식으로 코드를 바꿨고 꽤 오랜 시간동안 고민한 끝에 해결할 수 있었다.
💡코드(메모리 : 31256KB, 시간 : 40ms)
import sys
input = sys.stdin.readline
import sys
input = sys.stdin.readline
def isBingo(arr):
bingo_line = 0
for i in arr:
if i.count(1) == 5:
bingo_line += 1
for i in range(5):
temp_height = 0
for j in range(5):
if arr[j][i] == 1:
temp_height += 1
if temp_height == 5:
bingo_line += 1
temp_diagonal1 = 0
for i in range(5):
if arr[i][i] == 1:
temp_diagonal1 += 1
if temp_diagonal1 == 5:
bingo_line += 1
temp_diagonal2 = 0
for i in range(5):
if arr[4-i][i] == 1:
temp_diagonal2 += 1
if temp_diagonal2 == 5:
bingo_line += 1
return bingo_line
bingo = [list(map(int, input().strip().split())) for _ in range(5)]
line1 = list(map(int, input().strip().split()))
line2 = list(map(int, input().strip().split()))
line3 = list(map(int, input().strip().split()))
line4 = list(map(int, input().strip().split()))
line5 = list(map(int, input().strip().split()))
line = line1 + line2 + line3 + line4 + line5
for Turn, num in enumerate(line):
for t in bingo:
if num in t:
t[t.index(num)] = 1
break
result = isBingo(bingo)
if result >= 3:
print(Turn+1)
sys.exit(0)
💡소요시간 : 53m