1. 문제
문제 설명


제한사항
입출력

입출력 예시
2. 풀이 과정
내가 생각한 진행 과정
- 설치
- 일단 answer에 넣는다.(append)
- check함수에서 설치 여부 확인
- answer을 돌면서 설치되어도 괜찮으면 True, 조건에 맞지않으면 False 리턴
- False가 리턴되었다면, 설치할 수 없다는 의미이므로 뺀다.(remove)
- 삭제
- 일단 answer에서 뺀다.(remove)
- check함수에서 삭제 여부 확인
- answer을 돌면서 안에 있는 것들이 기둥 또는 보를 세우는 조건에 맞지 않으면(False) 방금 remove한 애들이 있어야 설치가 된다는 의미이므로 넣는다.(append)
코드
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:
pass
else:
return False
if a == 1:
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):
pass
else:
return False
return True
def solution(n, build_frame):
answer = []
for x, y, a, b in build_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 check(answer) is False:
answer.append([x, y, a])
return sorted(answer)