Written by
최태열
on
on
[Python][프로그래머스][Level3] 기둥과 보 설치
[Python][프로그래머스][Level3] 기둥과 보 설치
코드
def check(x,y,a,frame):
if a: # 보
if [x,y-1,0] in frame or [x+1,y-1,0] in frame
or ([x-1,y,1] in frame and [x+1,y,1] in frame):
return True
else: # 기둥
if y==0 or [x,y-1,0] in frame
or [x,y,1] in frame
or [x-1,y,1] in frame:
return True
return False
def solution(n, build_frame):
# [x,y,a,b] a=0,1 기둥, 보 b=0,1 삭제, 설치
frame=[]
for x,y,a,b in build_frame:
if b:
if check(x,y,a,frame):
frame.append([x,y,a])
else:
frame.remove([x,y,a])
for xx,yy,aa in frame:
if not check(xx,yy,aa,frame):
frame.append([x,y,a])
break
return sorted(frame)
frame에 설치된 기둥은 [x,y,0] 보는 [x,y,1]로 저장된다.
x,y 좌표에 설치할 수 있는지 확인해서 조건에 맞게 기둥과 보를 설치한다.
삭제의 경우는 삭제하고 모든 frame 중에 조건에 맞지 않는 기둥이나 보가 있다면
삭제할 수 없는 기둥과 보 이므로 넘어간다.
이런 과정을 반복하면 된다.
Discussion and feedback