개인 공부/TIL

[ TIL - PGS ] 99클럽 코테 스터디 38일차 TIL + 오늘의 학습 가이드

킴도비 2024. 8. 28. 16:40

💡 오늘의 학습 키워드

  • 탐욕법(Greedy)

 

✅ 오늘 공부한 내용

  • 오늘의 프로그래머스 문제! 디펜스 게임
 

프로그래머스

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

programmers.co.kr

 

 

👀 오늘의 회고

🔥 어떤 시도를 했는가?

  • 오늘의 코드 풀이
import java.util.*;

class Solution {
    public int solution(int n, int k, int[] enemy) {
        // 최대 힙을 사용하기 위해 우선순위 큐를 생성합니다.
        PriorityQueue<Integer> pq = new PriorityQueue<>((a, b) -> b - a);

        int answer = 0;
        
        for (int i = 0; i < enemy.length; i++) {
            // 현재 라운드의 적 수를 우선순위 큐에 추가합니다.
            pq.add(enemy[i]);

            // 병사를 사용하여 현재 라운드를 막습니다.
            n -= enemy[i];

            // 만약 병사의 수가 음수가 되면 (적의 수보다 병사가 부족한 경우)
            if (n < 0) {
                // 무적권을 사용해야 하므로 가장 많은 병사를 소모할 라운드를 무적권으로 막습니다.
                if (k > 0) {
                    n += pq.poll(); // 병사를 다시 복구하고 무적권을 사용
                    k--; // 무적권 사용 횟수 감소
                } else {
                    // 무적권이 더 이상 없다면 게임이 종료됩니다.
                    break;
                }
            }
            answer++; // 막은 라운드 수 증가
        }

        return answer; // 막은 라운드 수를 반환
    }
}

 

👩‍💻 내일은 무엇을 학습할 것인가?

  • 항해 99 마지막 온라인 세션 진행
  • 항해 99 문제 풀기
  • 원티드 수업 듣기
  • 책 읽기