본문 바로가기
Programming/Programmers

[프로그래머스] 외벽 점검 (Python)

by 데이터현 2021. 11. 18.

https://programmers.co.kr/learn/courses/30/lessons/60062

 

코딩테스트 연습 - 외벽 점검

레스토랑을 운영하고 있는 "스카피"는 레스토랑 내부가 너무 낡아 친구들과 함께 직접 리모델링 하기로 했습니다. 레스토랑이 있는 곳은 스노우타운으로 매우 추운 지역이어서 내부 공사를 하

programmers.co.kr

 

set과 product를 이용해서 풀려고 했는데 시간초과가 나서

다른 풀이를 이용했다

 

def solution(n,weak,dist):
    count = 0
    repair_list = [()]
    dist.sort(reverse = True)
    for distance in dist:
        repairs = []
        count +=1
        for i,st in enumerate(weak):
            start = st
            ends = weak[i:] + [n + a for a in weak[:i]]
            move = [end % n for end in ends if end - start <= distance]
            repairs.append(set(move))
        new = set()
        for repair in repairs:
            for re in repair_list:
                update = repair | set(re)
                if len(set(weak) - update) == 0:
                    return count
                new.add(tuple(update))
        repair_list = new
    return -1

댓글