상세 컨텐츠

본문 제목

[SW Expert Academy] 15612. 체스판 위의 룩 배치 | 구현 | 파이썬, 소스코드, 정답

Coding Test/문제풀이

by yooputer 2023. 5. 19. 08:42

본문

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

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com


문제 요약

  • 8*8의 '.'과 'O'로 이루어진 체스판이 주어진다.
  • O의 개수가 8개이아니거나 O가 같은 행, 같은 열에 존재하면 no, 그렇지 않으면 yes를 출력하라

핵심 아이디어

  • O의 좌표를 리스트에 저장해 놓는다.
  • x좌표가 같은 O가 있는지, y좌표가 같은 O가 있는지 검사한다

소스코드

T = int(input())

for test_case in range(1, T + 1):
    rooks = []

    for i in range(8):
        row = input()
        for j in range(8):
            if row[j] == 'O':
                rooks.append((i, j))

    answer = "yes"
    if len(rooks) != 8:
        answer = "no"
    else:
        rooks.sort()
        for i in range(7):
            if rooks[i][0] == rooks[i + 1][0]:
                answer = "no"
                break
        else:
            rooks.sort(key=lambda x: x[1])
            for i in range(7):
                if rooks[i][1] == rooks[i+1][1]:
                    answer = "no"
                    break

    print("#"+str(test_case), answer)

 

관련글 더보기