백준 2578(빙고) - 구현
반응형
import sys
# 빙고 줄(가로, 세로, 대각선) 개수를 세는 함수
def count_bingo(visited):
bingo_count = 0
# 가로줄 검사
for row in visited:
if all(row): # 한 줄이 전부 True이면 빙고 1줄
bingo_count += 1
# 세로줄 검사
for col in range(5):
if all(visited[row][col] for row in range(5)):
bingo_count += 1
# 대각선 (\) 검사
if all(visited[i][i] for i in range(5)):
bingo_count += 1
# 대각선 (/) 검사
if all(visited[i][4 - i] for i in range(5)):
bingo_count += 1
return bingo_count
# 철수의 빙고판 숫자 위치 저장용 딕셔너리
bingo = {}
# 각 칸이 지워졌는지 여부를 저장하는 5x5 불리언 배열
visited = [[False]*5 for _ in range(5)]
# 전체 입력 받기 (숫자 1~25까지 10줄 입력이 공백으로 들어옴)
data = list(map(int, sys.stdin.read().split()))
# 앞 25개는 철수 빙고판 숫자
board_nums = data[:25]
# 뒤 25개는 사회자가 부르는 숫자 순서
call_nums = data[25:]
# 철수 빙고판 숫자 위치 저장: 숫자 → (행, 열)
for idx, num in enumerate(board_nums):
bingo[num] = (idx // 5, idx % 5)
# 사회자가 숫자를 부를 때마다 해당 위치를 방문 체크
for idx, num in enumerate(call_nums):
x, y = bingo.get(num)
visited[x][y] = True
# 빙고 줄이 3줄 이상 생기면 해당 호출 순번 출력 후 종료
if count_bingo(visited) >= 3:
print(idx + 1)
break
반응형
'[백준] Python,Java로 풀기📖 > 구현' 카테고리의 다른 글
백준 10819(차이를 최대로)- Python(파이썬),Java(자바) - 구현,브루트포스(Permutations,Combinations,백트래킹,Java- 스택 사용 ) (0) | 2022.06.09 |
---|---|
백준 1913(달팽이) - Python(파이썬) - 구현 (0) | 2022.06.06 |
백준 2232(지뢰) - 구현 (0) | 2022.05.25 |
댓글
이 글 공유하기
다른 글
-
백준 10819(차이를 최대로)- Python(파이썬),Java(자바) - 구현,브루트포스(Permutations,Combinations,백트래킹,Java- 스택 사용 )
백준 10819(차이를 최대로)- Python(파이썬),Java(자바) - 구현,브루트포스(Permutations,Combinations,백트래킹,Java- 스택 사용 )
2022.06.09 -
백준 1913(달팽이) - Python(파이썬) - 구현
백준 1913(달팽이) - Python(파이썬) - 구현
2022.06.06 -
백준 2232(지뢰) - 구현
백준 2232(지뢰) - 구현
2022.05.25