반응형
리뷰
구현 문제는 너무 어렵고 오래걸린다.
문제 풀이
우선 빙고판과 숫자판 그리고 순서 인덱스를 초기화 해준다. for문이 많이 발생할 것으로 예상되어 함수를 사용해 주었다.
- call_number 함수 : 리스트와 숫자를 받아와 해당 리스트에서 동일한 숫자 발견 시 해당 숫자를 0으로 바꾸고 리턴
- check_bingo 함수 : 행과 열, 대각선의 숫자가 모두 0인지 체크 후 빙고의 갯수 리턴
매번 번호 호출 시마다 순서를 증가시켜 주고 빙고판에서 해당 숫자를 0으로 만들어 준 뒤 빙고의 숫자가 3개 이상이 될 경우 번호를 출력 하고 리턴하는 것으로 마무리 하였다.
참고 사항
for문이 많아 함수를 사용하는 것을 추천한다.
정답 코드
def q2578():
# 백준 2578번 빙고 파이썬
def call_number(board, number):
for i in range(5):
for j in range(5):
if board[i][j] == number:
board[i][j] = 0
return
def check_bingo(board):
bingo_cnt = 0
for row in board:
if all(i == 0 for i in row):
bingo_cnt += 1
for col in range(5):
if all(board[row][col] == 0 for row in range(5)):
bingo_cnt += 1
if all(board[i][i] == 0 for i in range(5)):
bingo_cnt += 1
if all(board[i][4 - i] == 0 for i in range(5)):
bingo_cnt += 1
return bingo_cnt
lst1 = [list(map(int, input().split())) for _ in range(5)]
lst2 = [list(map(int, input().split())) for _ in range(5)]
cnt = 0
for i in range(5):
for j in range(5):
cnt += 1
call_number(lst1, lst2[i][j])
chk = check_bingo(lst1)
if chk >= 3:
print(cnt)
return
q2578()
728x90
반응형
'알고리즘 공부 > 파이썬(Python)' 카테고리의 다른 글
백준 2980번 도로와 신호등 파이썬 (0) | 2024.06.25 |
---|---|
백준 10709번 기상캐스터 파이썬 (0) | 2024.06.25 |
백준 10157번 자리배정 파이썬 (0) | 2024.06.25 |
백준 3985번 롤 케이크 파이썬 (0) | 2024.06.25 |
백준 2628번 종이자르기 파이썬 (0) | 2024.06.25 |