차곡차곡

[SWEA/Python] SW Expert Academy 15612번 - 체스판 위의 룩 배치 본문

CS/Algorithm

[SWEA/Python] SW Expert Academy 15612번 - 체스판 위의 룩 배치

sohy 2022. 11. 6. 11:49

SW Expert Academy #15612 체스판 위의 룩 배치

 

SW Expert Academy

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

swexpertacademy.com

t = int(input())   # 테스트 케이스 개수

def count():
  row = [0, 0, 0, 0, 0, 0, 0, 0]
  col = [0, 0, 0, 0, 0, 0, 0, 0]
  cnt = 0
  for i in range(8):
    for j in range(8):
      if rook[i][j] == 'O':
        row[i] += 1
        col[j] += 1
        cnt += 1
        if row[i] >= 2 or col[j] >= 2:
          return False
  if cnt == 8:
    return True
  else:
    return False

for i in range(t):
  rook = [list(input().strip()) for _ in range(8)]
  if count():
    print(f'#{i+1} yes')
  else:
    print(f'#{i+1} no')
  1. row와 col 리스트는 각 행열에서 rook가 몇 번 등장했는지 개수를 세어주는 리스트이다.
  2. O가 등장할 경우, O가 있는 행과 열의 번호를 인덱스로 하여 row와 col 리스트에서 각각 값을 +1을 해준다. 이때 rook의 전체 개수를 세는 cnt 변수도 +1을 해준다.
  3. 각 행열의 rook 개수 리스트 값을 카운트 업 했을 때 2 이상이 되면 조건을 벗어난 것으로 바로 False를 리턴해준다.
  4. 중간에 False가 리턴되지 않고 끝까지 체스판을 다 돌았을 때, rook의 전체 개수가 8개이면 모든 조건을 충족한 것으로 True를 리턴해주고, 만약 8개 이상 혹은 이하이면 False를 리턴해준다.

Comments