https://school.programmers.co.kr/learn/courses/30/lessons/60061
문제 해결
이것은 구현 문제입니다.
제거하거나 삭제할 때 제대로 연결되었는지 확인할 수 있습니다.
주어진 조건을 충족하기만 하면 됩니다.
제 생각에는
충분한 시간이 주어지면 입력이 1000을 넘지 않지만 구현하는 것이 너무 어렵고 시간이 많이 걸립니다.
꽤 쉽게 고칠 수 있었지만 아직 기술이 많이 부족한 것 같아요.
코드
def check(answer):
for x, y, a in answer:
if a == 0: #기둥 체크
if y == 0 or (x-1, y, 1) in answer or (x, y, 1) in answer or (x, y-1, 0) in answer:
continue
return False
else: #보 체크
if (x, y-1, 0) in answer or (x+1, y-1, 0) in answer or ((x-1, y, 1) in answer and (x+1, y, 1) in answer):
continue
return False
return True
def solution(n, build_frame):
answer = ()
for frame in build_frame:
x, y, a, b = frame
if b == 1: # 설치
answer.append((x, y, a))
if not check(answer):
answer.remove((x, y, a))
else: # 제거
answer.remove((x, y, a))
if not check(answer):
answer.append((x, y, a))
return sorted(answer)