본문 바로가기
문제 풀이/프로그래머스 (Programmers)

[Python] 프로그래머스 : 기둥과 보 설치

by 희조당 2023. 2. 19.
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)

댓글