728x90
SMALL
🐹문제
https://school.programmers.co.kr/learn/courses/30/lessons/60061
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
위 그림과 같이 기둥과 보를 설치한다.
아래 규칙에 맞게 설치, 제거되어야한다.
- 기둥은 바닥 위에 있거나 보의 한쪽 끝 부분 위에 있거나, 또는 다른 기둥 위에 있어야 합니다.
- 보는 한쪽 끝 부분이 기둥 위에 있거나, 또는 양쪽 끝 부분이 다른 보와 동시에 연결되어 있어야 합니다.
마지막에 어떤 구조물이 남는지 출력하면 된다.
🐹풀이
보와 기둥 설치, 삭제 모두 진행후, 유효한지 is_ok함수를 통해 확인한다.
def is_ok(wall):
for x,y,s in wall:
if s==0: #기둥
if y == 0 or [x - 1, y, 1] in wall or [x, y, 1] in wall or [x, y - 1, 0] in wall:
continue
return False
elif s == 1: # 보
if [x, y - 1, 0] in wall or [x + 1, y - 1, 0] in wall or ([x - 1, y, 1] in wall and [x + 1, y, 1] in wall):
continue
return False
return True
def solution(n, build_frame):
wall =[]
for bf in build_frame:
x=bf[0]
y=bf[1]
if bf[3]==1: # 설치
wall.append([x,y,bf[2]])
if is_ok(wall) is False:
wall.remove([x,y,bf[2]])
else: #제거
wall.remove([x,y,bf[2]])
if is_ok(wall) is False:
wall.append([x,y,bf[2]])
wall.sort()
print(wall)
return wall
728x90
LIST
'코테공부 > python 프로그래머스' 카테고리의 다른 글
파이썬 프로그래머스 : 동굴탐험 (0) | 2025.02.23 |
---|---|
프로그래머스 : 2개 이하로 다른 비트 (0) | 2024.08.15 |
파이썬 프로그래머스 : 입국심사 (0) | 2024.08.15 |
파이썬 프로그래머스 : 외벽 정검 (0) | 2024.08.14 |
프로그래머스 : 석유 시추 (0) | 2024.08.11 |