BOJ - 2578번 빙고 (Python)

woga·2021년 1월 19일
0

python 풀이

목록 보기
21/27
post-thumbnail

문제 출처: https://www.acmicpc.net/problem/2578

난이도

Silver 5


풀이 방법

문제 그대로 구현. 파이썬 초보에게는 문법 때문에 내가 모르는게 있나하고 일일이 검색해봄


통과 코드

def isCheck(check):
    cnt = 0
    #가로
    for i in range(5):
        flag = True
        if False in check[i]:
            flag = False
        if flag:
            cnt +=1
    # 세로
    col_check = list(map(list,zip(*check)))
    for i in range(5):
        flag = True
        if False in col_check[i]:
            flag = False
        if flag:
            cnt += 1

    # 대각선
    r_flag, l_flag = True, True
    for i in range(5):
        if check[i][i] == 0:
            r_flag = False
        if check[i][4 - i] == 0:
            l_flag = False
    if r_flag:
        cnt += 1
    if l_flag:
        cnt += 1

    if cnt >= 3:
        return True
    return False

if __name__ == '__main__':
    arr = []
    mc = []
    ch = [[False]*5 for _ in range(5)]
    count = 0

    for i in range(5):
        arr.append(list(map(int, input().split())))
    for i in range(5):
        mc.append(list(map(int, input().split())))

    for x in mc:
        while x:
            num = x.pop(0)
            count += 1
            for i in range(5):
                for j in range(5):
                    if arr[i][j] == num:
                        ch[i][j]= True
                        break

            if count >= 5 and isCheck(ch):
                print(count)
                exit()
profile
와니와니와니와니 당근당근

0개의 댓글