1. 문제
- 프로그래머스 문제와 동일
- 조건에 맞게 건물을 지을 수 있는지 시뮬레이션 할 수 있는 프로그램을 만들기
- 조건
- 기둥은 바닥위에 있거나, 보의 한쪽 끝 부분 위에 있거나, 또는 다른 기둥 위에 있어야 한다.
- 보는 한쪽 끝 부분이 기둥 위에 있거나, 또는 양쪽 끝 부분이 다른 보와 동시에 연결되어 있어야 한다.
제한 사항 및 입출력 예
2. 아이디어
- 문제 조건에 맞게 구현하면 된다.
- 순차적으로 작업을 하나씩 진행하면서(설치하거나 제거하면서), 그때마다 조건에 맞는지 확인한다.
3. 예제코드
def is_possible(result):
for x,y, stuff in result:
if stuff == 0 :
if y == 0 or [x-1,y,1] in result or \
[x,y,1] in result or [x,y-1,0] in result:
continue
return False
elif stuff == 1 :
if [x, y-1, 0] in result or [x+1, y-1, 0] in result or\
([x-1, y, 1] in result and [x+1,y,1] in result) :
continue
return False
return True
def solution(n, build_frame):
answer = []
for x,y,stuff,setup in build_frame:
if setup == 1:
answer.append([x,y,stuff])
if not is_possible(answer) :
answer.remove([x,y,stuff])
if setup == 0 :
answer.remove([x,y,stuff])
if not is_possible(answer):
answer.append([x,y,stuff])
return sorted(answer)
4. 배운점
- 리스트안에 요소가 있는지 확인하는 것과 remove를 다시 상기할 수 있었다.
참조
- 이것이 취업을 위한 코딩테스트다. with 파이썬