문제 풀이/프로그래머스 (Programmers)
[Python] 프로그래머스 : 기둥과 보 설치
희조당
2023. 2. 19. 23:54
728x90
https://school.programmers.co.kr/learn/courses/30/lessons/60061
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
💡 문제 풀이
구현 문제이다.
제거하거나 삭제했을 때 정상적으로 잘 연결되어 있는지 확인하면 된다.
주어진 조건만 잘 맞추면 된다.
✔️ 느낀 점
시간이 충분히 주어졌고, 입력은 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)