코딩테스트

외벽 점검

ajaa 2024. 11. 29. 17:18

📌문제

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

📌풀이

원형으로 나열된 데이터를 처리하는 경우에는 문제 풀이 간단히 하기 위해 길이를 2배로 늘려서 원형을 일자 형태로 만듦

 

📌코드

def solution(n, weak, dist):
    #길이를 2배로 늘려서 원형을 일자 형태로 변형
    length=len(weak)
    for i in range(length):
        weak.append(n+weak[i])
    answer=len(dist)+1 #투입할 친구 수의 최솟값, 초기화
    #0부터 length-1까지의 위치를 각각 시작점으로 설정
    for start in range(length):
        #친구를 나열하는 모든 경우의 수 각각에 대해 확인
        for friends in list(permutations(dist, len(dist))):
            count=1 #투입할 친구 수
            #해당 친구가 점검하는 마지막 위치
            position=weak[start]+friends[count-1]
            #시작점부터 모든 취약 지점 확인
            for index in range(start, start+length):
                #점검할 수 있는 위치 벗어난 경우
                if position<weak[index]:
                    count+=1 #새로운 친구 투입
                    if count>len(dist): #더 투입 불가하다면 종료
                        break
                    position=weak[index]+friends[count-1]
                answer=min(answer, count) #최솟값 계산
            if answer>len(dist):
                return -1
            return answer

 

📌참고

https://g.co/kgs/eyd5SSd

 

이것이 취업을 위한 코딩 테스트다 with 파이썬

IT 취준생이라면 누구나 입사하고 싶은 카카오・삼성전자・네이버・라인!취업의 성공 열쇠는 알고리즘 인터뷰에 있다! IT 취준생이라면 누구나 가고 싶어 하는 카카오, 라인, 삼성전자의 2016년

www.google.com