Notice
Recent Posts
Recent Comments
Link
CodeClover
[JAVA] 백준 2578_빙고 본문
[문제링크]
https://www.acmicpc.net/problem/2578
📌 문제 탐색하기
5x5 크기의 빙고판에 숫자 1-25가 랜덤으로 적혀있는데, 사회자가 숫자를 하나씩 부르면 불린 숫자를 지워나간다.
가로, 세로, 대각선의 숫자 5개가 모두 지워지면 그 줄은 빙고! 빙고가 3개 이상이면 게임 완료.
이때, 사회자가 몇번째 숫자를 불렀을때 빙고가 3빙고가 완성되는지 출력하는 문제이다.
📌 가능한 시간복잡도
....음...
📌 코드 설계하기
📌 정답 코드
import sys
# 1. 문제의 입력을 받습니다.
# 1-1. 빙고판을 입력 받습니다.
arr = []
for _ in range(5):
arr.append(sys.stdin.readline().split())
# 1-2. 2차원배열로 입력되는 사회자가 부르는 수를 하나의 list에 담습니다.
num = []
for _ in range(5):
list = sys.stdin.readline().split()
for i in list:
num.append(i)
# 2. 빙고판을 초기화 합니다.
check_board = [[False for _ in range(5)] for _ in range(5)]
# 3. 빙고 수를 체크할 수 있는 함수를 구현합니다.
# 3-1. 빙고 row 수를 확인하기 위한 함수를 구현합니다.
def check_row_bingo():
count = 0
for i in range(5):
is_bingo = True
for j in range(5):
if not check_board[i][j]:
is_bingo = False
break
if is_bingo:
count += 1
return count
# 3-2. 빙고 column 수를 확인하기 위한 함수를 구현합니다.
def check_column_bingo():
count = 0
for j in range(5):
is_bingo = True
for i in range(5):
if not check_board[i][j]:
is_bingo = False
break
if is_bingo:
count += 1
return count
# 3-3. 대각선 빙고 수를 확인하기 위한 함수를 구현합니다.
def check_diagonal_bingo():
count = 0
# \ 모양 대각선
is_bingo = True
for i in range(5):
if not check_board[i][i]:
is_bingo = False
break;
if is_bingo:
count += 1
# / 모양 대각선
is_bingo = True
for i in range(5):
if not check_board[i][4 - i]:
is_bingo = False
break
if is_bingo:
count += 1
return count
# 4. 사회자가 부르는 각 수에 대해 빙고판을 True로 체크하고, 만족하는 빙고의 수를 확인합니다.
for i in range(25):
now_num = num[i]
# 4-1. 사회자가 부른 숫자의 빙고판 위치를 확인하고, 그 위치를 True로 표기합니다.
for x in range(5):
for y in range(5):
if arr[x][y] == now_num:
check_board[x][y] = True
# 4-2. 빙고판을 True로 체크한 이후 빙고가 몇개 완성되었는지 확인합니다.
count = check_row_bingo() + check_column_bingo() + check_diagonal_bingo()
# 5. 완성된 빙고의 개수가 3개 이상이라면 해당 순서를 출력하고 탈출합니다.
if count >= 3:
print(i+1)
break
'코딩테스트' 카테고리의 다른 글
[JAVA] 백준 2775_부녀회장이 될테야 (0) | 2025.01.15 |
---|---|
[JAVA] 백준 2748_피보나치 수 2 (3) | 2025.01.14 |
[JAVA] 백준 7568_덩치 (1) | 2025.01.12 |
[JAVA] 백준 2947_나무 조각 (0) | 2025.01.11 |
[JAVA] 백준 25305_커트라인 (1) | 2025.01.10 |