풀이


5x5 빙고판에서 3개 이상의 빙고가 나왔을때의 순서를 출력하는 알고리즘을 작성해야한다.

주어진 입력값을 통해 빙고판과 사회자가 순서대로 부를 숫자를 리스트에 저장한다.

빙고의 규칙대로 세로, 가로, 대각선의 빙고여부 판단을 위한 함수가 필요하다.

총 4가지의 함수로 빙고여부 판단 기능을 구현했고 사회자가 숫자를 한 번 부를 때 마다 이 기능을 통해 3개 이상의 빙고가 나왔는지 확인해주면서 3개 이상의 빙고가 나올 경우 몇 번째 숫자인지 출력한 뒤 반복문을 탈출하면된다.

아래 주석처리된 코드를 통해 사회자의 숫자가 나올 때 마다의 빙고판 현황을 확인할 수 있다.

소스코드


import sys
input = sys.stdin.readline
 
def hor_cnt(bingo):
    bng_cnt = 0
    for b in bingo:
        bng = 0
        for i in b:
            if i.isdigit():
                bng = 0
                break
            else:
                bng += 1
        if bng != 0:
            bng_cnt += 1
    return bng_cnt
 
def ver_cnt(bingo):
    bng_cnt = 0
    for j in range(5):
        bng = 0
        for i in range(5):
            if bingo[i][j].isdigit():
                bng = 0
                break
            else:
                bng += 1
        if bng != 0:
            bng_cnt += 1
    return bng_cnt
 
def r_cnt(bingo):
    bng_cnt = 0
    r = [bingo[4][0], bingo[3][1], bingo[2][2], bingo[1][3], bingo[0][4]]
    for i in r:
        bng = 0
        if i.isdigit():
            bng = 0
            break
        else:
            bng += 1
    if bng != 0:
        bng_cnt += 1
    return bng_cnt
 
def l_cnt(bingo):
    bng_cnt = 0
    l = [bingo[0][0], bingo[1][1], bingo[2][2], bingo[3][3], bingo[4][4]]
    for i in l:
        bng = 0
        if i.isdigit():
            bng = 0
            break
        else:
            bng += 1
    if bng != 0:
        bng_cnt += 1
    return bng_cnt
 
bingo = [input().rstrip().split() for _ in range(5)]
nums = []
 
for _ in range(5):
    for i in input().rstrip().split():
        nums.append(i)
 
for n in range(25):
    for i in range(5):
        for j in range(5):
            if bingo[i][j] == nums[n]:
                bingo[i][j] = "O"
                break
    # for b in bingo:
    #     print(b)
    # print(n, "---------------", hor_cnt(bingo), ver_cnt(bingo), r_cnt(bingo), l_cnt(bingo))
    ttl = hor_cnt(bingo) + ver_cnt(bingo) + r_cnt(bingo) + l_cnt(bingo)
    if ttl >= 3:
        print(n+1)
        break

References