반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 메뉴리뉴얼 파이썬
- 스타수열
- 2차원동전뒤집기
- MLE
- 비트마스킹
- 딥러닝
- 프로그래머스 2차원동전뒤집기
- 프로그래머스
- 딥러닝학습
- 인공신경망 학습
- 자율성장 인공지능
- 로지스틱 최대우도
- 광고삽입 파이썬
- k겹 교차검증
- 프로그래머스 스타수열
- 딥러닝 가중치 갱신
- 과적합방지
- 스타수열 파이썬
- 카카오 코테 메뉴리뉴얼
- 프로그래머스 누적합
- 모델경량화
- 데이터축소
- 인공지능 경진대회
- AI경량화
- 딥러닝파라미터
- 프로그래머스 2차원동전뒤집기 파이썬
- 카카오 메뉴리뉴얼
- 확률과우도
- 머신러닝 학습 검증
- 프로그래머스광고삽입
Archives
- Today
- Total
머신러닝 개발자의 러닝머신
[프로그래머스-디펜스 게임] (Python) 본문
반응형
문제
https://school.programmers.co.kr/learn/courses/30/lessons/142085
문제 해결 아이디어
- 무적권은 우선적으로 사용한다
- 단, 앞에서부터 살펴보면서 해당 위치까지 가장 큰 스테이지부터 무적권 사용해야 함
-> 무적권을 사용한 스테이지 중, 적의 수가 가장 작은 스테이지보다 현재 적의 수가 더 많으면 무적권을 현재 스테이지에 사용
-> 힙 구조를 이용해야겠다
문제풀이
- 앞 스테이지부터 탐색, 사용한 무적권이 k보다 적으면 무적권 무조건 사용
- 이미 k개의 무적권을 모두 사용한 경우, 해당 스테이의 적의 수가 무적권을 사용한 스테이지의 가장 작은 적의 수보다 크면 무적권 사용 변경, 이전에 사용한 무적권의 적의 수는 n-= 해줌
- 무적권 무효하는 스테이지의 적의 수가 n 보다 작거나 같아야 함. 그렇지 않으면 종료 - 이미 k개의 무적권을 모두 사용한 경우, 해당 스테이지의 적의 수가 무적권을 사용한 스테이지의 가장 작은 적의 수보다 작거나 같은 경우, 무적권 변경 x,
- 현재 스테이지의 적의 수가 n 보다 작거나 같은 경우만 클리어 가능, 그렇지 않으면 종료
코드
import heapq
def solution(n, k, enemy):
answer = len(enemy)
hq = []
for i in range(len(enemy)):
if len(hq) < k:
heapq.heappush(hq, enemy[i])
continue
if hq[0] >= enemy[i]:#무적권 사용 바꿀 수 없음
if n< enemy[i]:
return i
else:
n -= enemy[i]
continue
elif hq[0] < enemy[i]: #무적권 사용 바꾸기
if n>= hq[0]:
n -= heapq.heappop(hq)
heapq.heappush(hq, enemy[i])
else:
return i #i 스테이지 막을 수 없음
return answer
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스: 둘만의 암호(Python)] (0) | 2023.04.23 |
---|---|
✨[2022KAKAO TECH INTERNSHIP: 두 큐 합 같게 만들기](Python) (0) | 2023.04.13 |
[프로그래머스: 테이블 해시 함수] (Python) (0) | 2023.04.12 |
[프로그래머스: 문자열 나누기](Python) (0) | 2023.04.12 |
[프로그래머스-가장 가까운 같은 글자] (Python) (0) | 2023.04.12 |