Problem Solving/백준

백준 2578 빙고

minOE 2025. 7. 8. 09:20
728x90

https://www.acmicpc.net/problem/2578

def check_line(cnt):
 
    
    for i in range(5):
        if sum(check[i]) == 5:
            cnt+=1
   
    
    for i in range(5):
        temp =0
        for j in range(5):
            temp += check[j][i]
        if temp == 5:
            cnt+=1
 
    
    temp =0
    for i in range(5):
        for j in range(5):
            if i== j :
                temp += check[i][j]
    if temp ==5 :
        cnt+=1
    
   
    
    temp = 0
    for i in range(5):
        for j in range(5):
            if i+ j ==4:
                temp += check[i][j]
    
    if temp ==5:
        cnt+=1
    
    return cnt >=3





matrix = [list(map(int,input().split())) for _ in range(5)]
elems  = [list(map(int,input().split())) for _ in range(5)]
check = [[0 for _ in range(5)] for _ in range(5)]
d= dict()
for i in range(5):
    for j in range(5):
        d[matrix[i][j]] = (i,j)
ans =0
for i in range(5):
    for j in range(5):
        x,y =d[elems[i][j]]
        check[x][y] =1
        ans +=1
        flag = check_line(0)
        if flag:
            print(ans)
            break
    if flag:
        break

 

더 깨끗하게 짤 수 있을 것 같다 .. 추후에 다시 리팩토링 해봐야겠다

728x90