반응형

 

시간초과로 계속 실패떠서 1시간 30분 잡고 있다가 사람들 글 찾아본 문제이다.

근데도 이해가 잘 안되서 ...

다음번엔 풀고 싶어서 기록하는 문제다..🥺

 

 

문제: https://school.programmers.co.kr/learn/courses/30/lessons/154539

 

 


 

문제

 

 

 

 

 

 


 

 

실패한 코드

# 방법1 - 뒤에 있는 값을 for문으로 돌면서 큰 값이 있으면 그 값을 , 없으면 -1을 배열에 추가했음 => 시간 초과로 실패   
# 끝까지 돌지 않고 뒤에 큰 값이 없을 경우 바로 -1을 리턴하게끔 수정 
def solution(numbers):
    len_numbers = len(numbers)
    answer = []

    for idx, number in enumerate(numbers):

        # print("========= answer:", answer)

        if idx+1 == len_numbers: # 맨 끝 값이면 -1  
            result = -1
            answer.append(result)
            break

        # 뒤에 큰 값이 없으면 -1 
        # max_num = max(set(numbers[idx:]))
        max_num = max(set(numbers[idx:]))
        if number >= max_num:
            result = -1
            answer.append(result)
            continue


        for i in range(idx+1, len_numbers):  
            if numbers[i] > number:
                # print("number:", number ,"\t numbers[i]:", numbers[i])

                result = numbers[i]
                answer.append(result)
                break
            # elif i+1 == len_numbers: # 끝까지 돌았는데 큰게 없으면
            #     result = -1

            #     answer.append(result)
            #     break

        
    return answer

 

 

 


 

 

 

 

참고 글: https://school.programmers.co.kr/questions/43218

 

해당 문제는 우선순위큐를 사용해서 풀면 풀리는 문제였다

우선순위 큐의 존재조차 몰라서 상상도 못했었다

 

 

우선순위 큐는 우선순위에 따라서 우선순위가 높은 요소가 먼저 나간다.

해당 글에선 heapq를 사용하는데 해당 모듈은 최소 힙으로 동작한다.

최소 힙은 작은 값이 우선순위가 높다.

따라서 최소 힙에선 작은 값이 먼저 제거가 된다.

 

근데 아직도 그래서 이게 어떻게 해야 되는건지 잘 모르겠다... ㅋ

 

공부 더 하고 이 문제를 다시 풀어야지 😂

 

으아아 내 자신이 너무 한심하게 느껴진다 하하..

코드 안짜고 계속 분석만 하다보니까 기억도 잘 안난당

그렇다해서 분석도 잘되고 있는 것도 아니다

뭐 하나 잘 하고 있는게 없다 

그냥 망한듯ㅋㅋㅍ퓨ㅠ

일단 존버하면서 이렇게 코테 문제라도 풀어야지

반응형
복사했습니다!