bingo = [list(map(int,input().split())) for _ in range(5)]
numbers = []
answer = 0
for i in range(5):
numbers += list(map(int,input().split()))
def delete_number(n):
for i in range(5):
for j in range(5):
if bingo[i][j] == n:
bingo[i][j] = 0
return
def count_row(): # 5개가 지워진 행의 개수
count = 0
for i in range(5):
if sum(bingo[i]) == 0:
count += 1
return count
def count_col(): # 5개가 지워진 열의 개수
count = 0
for i in range(5):
total = 0
for j in range(5):
total += bingo[j][i]
if total == 0:
count += 1
return count
def count_dig(): # 5개가 지워진 대각선의 개수
count = 0
if sum([bingo[x][x] for x in range(5)]) == 0:
count += 1
if sum([bingo[x][4-x] for x in range(5)]) == 0:
count += 1
return count
for num in numbers:
if (count_row() + count_col() + count_dig()) >= 3:
break
delete_number(num)
answer += 1
print(answer)
이번 문제는 주어진 빙고판에서 사회자가 불러준 숫자를 지워나갔을 때, 최초로 빙고를 외치게 되는 시점을 구하는 문제이다.
먼저 5개가 지워진 행 / 열 / 대각선이 3개 이상인지, 즉 빙고인지 확인하기 위해 각 행과 열, 대각선 별로 빙고인지 확인하는 함수를 각각 선언해주었다. (숫자를 지울 때 마다 0으로 저장했기 때문에 모든 값의 합이 0인지 확인하면 된다) 또한 사회자가 불러준 숫자를 지우는 함수(delete_number)를 선언하였다.
그 후 반복문을 사용하면서 매번 빙고인지 먼저 확인하고, 빙고가 아니라면 사회가자 불러준 숫자를 지워가며 횟수를 카운팅해주는 방식으로 간단하게 풀이하였다 :)
'Algorithm 💡 > Implementation' 카테고리의 다른 글
[프로그래머스 PCCP 모의고사 1번] 실습용 로봇 (0) | 2023.11.11 |
---|---|
[백준 7682번] 틱택토 (0) | 2023.10.20 |
[백준 20055번] 컨베이어 벨트 위의 로봇 (1) | 2023.10.05 |
[백준 1986번] 체스 (0) | 2023.09.30 |
[백준 17140번] 이차원 배열과 연산 (0) | 2023.09.19 |