본문 바로가기
코딩테스트 파이썬/파이썬 프로그래머스 2단계

디펜스 게임

by 세용용용용 2024. 4. 18.

 

 

코딩테스트 연습 - 디펜스 게임 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

나의 코드

# 2024-04-18
def solution(n, k, enemy):
    answer = 0
    
    # 애초에 디펜스가 가능한경우 바로 return
    if k >= len(enemy):
        return len(enemy)
    
    # 라운드를 늘려가며 탐색
    for len_index in range(1, len(enemy)+1):
        new_enemy=enemy[:len_index]
        #print(new_enemy)
        for _ in range(k):
            if new_enemy:
                new_enemy.remove(max(new_enemy))
        if sum(new_enemy)>n:
            return answer
        answer+=1
    return answer

시간 초과 발생...

 

수정 코드

# 2024-04-18
import heapq
# 애초에 방어권이 충분한 경우 모든 라운드 return
def solution(n, k, enemy):
    if k>=len(enemy):
        return len(enemy)
    
    heap_queue=[]
    # 순차 탐색하며 heappop해주기
    for i in range(len(enemy)):
        heapq.heappush(heap_queue,enemy[i])
        if len(heap_queue)>k:
            n-=heapq.heappop(heap_queue)
        if n<0:
            return i
    return len(enemy)

'코딩테스트 파이썬 > 파이썬 프로그래머스 2단계' 카테고리의 다른 글

Softeer 연습문제(2단계) - 바이러스  (0) 2024.06.25
Softeer 연습문제(2단계) - 전광판  (2) 2024.06.25
리코쳇 로봇  (0) 2024.02.19
하노이의 탑  (0) 2024.02.15
점 찍기  (2) 2023.11.24