[SWEA/D3] 15612 체스판 위의 룩 위치
문제 바로가기 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 나의 코드 및 설명 (맞았습니다!!) 어떠한 행에 룩이 있다면, 룩의 위치를
hellosonic.tistory.com
다시 풀어보기
t = int(input())
for test_case in range(1,t+1):
board = [list(input()) for _ in range(8)]
dx = [0,1,0,-1]
dy = [-1,0,1,0]
cnt = 0
ans = 1
for y in range(8):
for x in range(8):
if board[y][x] == "O": #룩이 있는 자리 일 때
cnt += 1 #룩이 개수를 카운트한다.
for i in range(4): #동서남북 네 방향에 대하여
for j in range(1,8): #체스판 끝까지 이동해본다
nx = x + j*dx[i]
ny = y + j*dy[i]
if nx<0 or ny<0 or nx>=8 or ny>=8: #범위를 벗어나면 다음 방향 확인
break
if 0<=nx<8 and 0<=ny<8: #범위 안에 있을 때
if board[ny][nx] == "O": #룩이 또 있으면
ans = 0 #ans = 0 표시하고
break #반복문 탈출
if ans == 0:
break
if ans == 0:
break
if ans == 0:
break
if ans == 1 and cnt == 8: #룩의 개수가 딱 8개이고, ans = 0 이 아니면 yes
print("#{} {}".format(test_case, "yes"))
else:
print("#{} {}".format(test_case, "no"))
피드백
오셀로 문제, 오목 문제에 방향벡터를 활용하여 문제를 풀었던 것처럼, 다시 풀때는 방향벡터를 활용하여 문제를 풀었고, 정답 판정을 받았다.
'SWEA (SW Expert Academy) > D3' 카테고리의 다른 글
[SWEA/D3] 9280 진용이네 주차타워 (0) | 2023.05.16 |
---|---|
[SWEA/D3] 13038 교환학생 (0) | 2023.05.16 |
[SWEA/D3] 1208 [S/W 문제해결 기본] 1일차 - Flatten (0) | 2023.05.16 |
[다시풀기] [SWEA/D3] 1206 [S/W 문제해결 기본] 1일차 - View (0) | 2023.05.16 |
[SWEA/D3] 7510 상원이의 연속 합 (0) | 2023.05.10 |