728x90
링크: https://www.acmicpc.net/problem/18428
✅ nr,nc 부분을 1) nr=r+dr[d] 이렇게 해서 무한루프를 돌게 만들었고 -> nr+=dr[d] , 2) nr+=dr[d] 을 내용 전에다 써버려서 초기값을 생략한채로 반복문을 돌렸다. nr,nc 지정할때 다시한번 로직이 맞는지 눈으로 확인해보자
from itertools import combinations
def isFind(r,c):
d = 0
while d < 4:
nr,nc = r+dr[d],c+dc[d]
while True:
if not(0<=nr<N and 0<=nc<N):
break
if data[nr][nc]=="O":
break
elif data[nr][nc]=="S":
return True
nr+=dr[d]
nc+=dc[d]
d+=1
return False
def solution(N,data):
T_list, X_list = [],[]
for i in range(N):
for j in range(N):
if data[i][j]=="S":
continue
elif data[i][j]=="T":
T_list.append((i,j))
continue
X_list.append((i,j))
for combi in combinations(X_list,3):
#넣기
for r,c in combi:
data[r][c]="O"
flag = True
for r,c in T_list:
if isFind(r,c):
flag=False
break
if flag:
return "YES"
#뺴기
for r,c in combi:
data[r][c]="X"
return "NO"
N = int(input())
data = [list(input().split()) for _ in range(N)]
dr = [-1,0,1,0]
dc = [0,1,0,-1]
print(solution(N,data))
728x90
'코딩테스트 > DFS,BFS,플러드필' 카테고리의 다른 글
[DFS/BFS] (프로그래머스) 블록 이동하기 - 파이썬 (0) | 2024.09.01 |
---|---|
[DFS/BFS] (백준) 인구이동 - 파이썬 (3) | 2024.09.01 |
[DFS/BFS] (백준) 연산자 끼워넣기 - 파이썬 (0) | 2024.08.30 |
[DFS/BFS] 괄호변환 - 파이썬 (0) | 2024.08.30 |
[DFS/BFS] 경쟁적 전염 - 파이썬 (0) | 2024.08.29 |