일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 코딩테스트
- 2870번
- 백준 2870번
- 플레이어 이동
- dfs
- Beakjoon
- 코테
- 17070번
- 2468 c++
- 2870번 수학숙제 c++
- 백준 17070번
- 백준 c++ 2870번
- 2870번 c++
- 오브젝트 풀링
- 프로그래머스
- C#
- 백준
- Lv2
- Unity
- 백준 1103번 게임
- 백준 c++ 2468번
- Algorithm
- 수학숙제
- 백준 1103번
- 2870번 수학숙제
- 유니티
- c++
- Lv.3
- 백준 17070번 c++
- 백준 1103번 c++
- Today
- Total
주녘공부일지
[프로그래머스 C#] Lv.2 디펜스 게임 본문
https://school.programmers.co.kr/learn/courses/30/lessons/142085?language=csharp
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1. 정답코드 및 핵심 아이디어, 유의사항
무적권을 적절히 활용하여 가장 많은 스테이지를 클리어 할 수 있는 경우를 구하는 문제
- 스테이지는 0번 인덱스 스테이지부터 순서대로 진행되야 함
풀이 순서
1) 무적권을 쓰지 않고 클리어 한 스테이지 정보를 담으며 스테이지를 진행
2) 스테이지를 클리어 할 수 없다면, 무적권을 쓰지 않고 클리어 한 스테이지 중 가장 몬스터가 많은 스테이지에서 무적권을 사용함 처리 (이 때, 무적권이 없다면 더 이상 스테이지를 클리어 할 수 없음)
우선순위 큐 ( Priority Queue )
+ 처음엔 리스트로 하여 무적권을 사용할 때마다 리스트 정렬을 했으나 시간 초과 ( 범위가 아주 큼 )
-> 우선순위 큐를 직접 구현해야 함 ( .NET 7.0 버전부터 우선순위 큐를 지원 )
https://godgjwnsgur7.tistory.com/198
[C# Reference] 우선순위 큐 ( Priority Queue )
DataClass PriorityQueue // 데이터 추가해서 사용 public class DataClass { public int cost; public DataClass(int cost) { this.cost = cost; } } // DataClass의 cost를 기준으로 가장 작은 값을 우선으로 두는 우선순위 큐 public clas
godgjwnsgur7.tistory.com
+ 링크에 있는 우선순위 큐는 최소 값을 우선으로 두기 때문에 최대 값을 우선으로 두게 수정하여 사용해야 합니다.
풀이 순서
using System;
using System.Collections.Generic;
public class Solution
{
// 우선순위 큐를 직접 구현하여 사용해야 함 (.NET 7.0 버전부터 사용 가능)
public class PriorityQueue<T> where T : IComparable<T> { ... }
public int solution(int n, int k, int[] enemy)
{
int answer = 0; // 스테이지 클리어 수
var pq = new PriorityQueue<int>(); // 무적권 없이클리어 한 스테이지
for (int i = 0; i < enemy.Length; i++)
{
// 스테이지 진행
pq.Enqueue(enemy[i]);
n -= enemy[i];
// 스테이지 클리어 불가능
if (n < 0)
{
// 무적권 사용
if (k > 0)
{
n += pq.Dequeue();
k--;
}
else
break;
}
// 스테이지 클리어 확인
answer++;
}
return answer;
}
}
'CodingTest > Programmers Lv.2' 카테고리의 다른 글
[프로그래머스 C#] Lv.2 충돌위험 찾기 (PCCP 기출문제 3번) (0) | 2024.09.23 |
---|---|
[프로그래머스 C#] Lv.2 퍼즐게임 (PCCP 기출문제 2번) (1) | 2024.09.23 |
[프로그래머스 C#] Lv.2 피로도 (0) | 2024.05.22 |
[프로그래머스 C#] Lv.2 과제 진행하기 (0) | 2024.05.22 |
[프로그래머스 C#] Lv.2 유사 칸토어 비트열 (0) | 2024.04.01 |