[구름 LEVEL] 환경과 쥐 크기의 상관관계 (Python)

이솔·2024년 7월 4일

[구름 LEVEL] 환경과 쥐 크기의 상관관계

https://level.goorm.io/exam/49101/%ED%99%98%EA%B2%BD%EA%B3%BC-%EC%A5%90-%ED%81%AC%EA%B8%B0%EC%9D%98-%EC%83%81%EA%B4%80%EA%B4%80%EA%B3%84/quiz/1


문제 설명


접근 방법

· 생쥐 배열을 오름차순으로 정렬

· 정렬된 생쥐 배열에서 앞에서부터 작은 순으로 꺼내서 큐에 저장

· 큐의 첫 요소와 마지막 요소의 차이가 4보다 크다면 첫 요소를 Pop, 이를 반복

· 이렇게 찾은 서브리스트의 길이가 최대 서브리스트의 길이보다 크다면, 최대 서브리스트를 해당 서브리스트로 대체


알고리즘 설계 및 구현

from collections import deque

def find_max_sublist(nums, diff):
    # 현재 하위 리스트를 저장할 sublist와 최대 하위 리스트를 저장할 max_sublist
    sublist = deque()
    max_sublist = []

    # 입력 리스트의 각 숫자에 대해 반복
    for num in nums:
        # 현재 숫자를 sublist에 추가
        sublist.append(num)
        # sublist의 첫 번째 요소와 마지막 요소의 차이가 'diff'를 초과하지 않도록 함
        while sublist[-1] - sublist[0] > diff:
            # 조건을 만족할 때까지 sublist의 앞쪽 요소를 제거
            sublist.popleft()
        # 현재 sublist의 길이가 max_sublist의 길이보다 크면 max_sublist를 갱신
        if len(sublist) > len(max_sublist):
            max_sublist = list(sublist)
    
    return max_sublist

_ = input()
a = sorted(map(int, input().split()))  # A 리스트를 정렬
b = sorted(map(int, input().split()))  # B 리스트를 정렬

# max_sublist 찾기
max_list_a = find_max_sublist(a, 4)  # 첫 번째 리스트에서 차이가 4 이하인 max_sublist를 찾음
max_list_b = find_max_sublist(b, 4)  # 두 번째 리스트에서 차이가 4 이하인 max_sublist를 찾음

# 결과 출력
result_a = max_list_a[-1] - 2  # A의 max_sublist의 마지막 요소에서 2를 뺀 값
result_b = max_list_b[-1] - 2  # B의 max_sublist의 마지막 요소에서 2를 뺀 값
print(result_a, result_b) 
print("good" if result_a >= result_b else "bad") 

결과


0개의 댓글