15612. 체스판 위의 룩 배치

홍범선·2023년 4월 17일
0

SW Expert Academy

목록 보기
1/18

15612. 체스판 위의 룩 배치

https://swexpertacademy.com/main/solvingProblem/solvingProblem.do

문제

풀이

정확히 8개 있어야 하고, 서로 다른 두 룩은 같은 열, 행에 있으면 안된다.

  1. 8x8 행렬 전체를 탐색한다.

    "O"를 발견하면 round_cnt 1증가하고 해당 룩 열, 행에 다른 룩이 있는지 check함수를 통해 판별한다.

2.열, 행에 다른 룩이 있는지 확인

for test_case in range(1, T + 1):
    graph = [list(input()) for _ in range(8)]
    ## 8개 각 행, 열 없어야함
    
    def check(row, col):	## 같은 열, 행 있는지 여부 함수
        for i in range(0, row):			## top
            if graph[i][col] == "O":
                return False
        for i in range(row + 1, 8):		## bottom
            if graph[i][col] == "O":
                return False
        for i in range(0, col):			## left
            if graph[row][i] == "O":
                return False
        for i in range(col+1, 8):			## right
            if graph[row][i] == "O":
                return False
        return True
    
    round_cnt, flg = 0, False
    for row in range(8):
        for col in range(8):
            if graph[row][col] == "O":
                round_cnt += 1
                if not check(row, col):
                    flg = True
                    break
        if flg:
            break
            
            
    if round_cnt != 8 or flg:
        print("#" + str(test_case) + " " + "no")
    else:
        print("#" + str(test_case) + " " + "yes")
profile
날마다 성장하는 개발자

0개의 댓글