ahlight
개발 저장소
ahlight
전체 방문자
오늘
어제
  • 분류 전체보기 (197)
    • Java (7)
    • Spring (5)
    • JPA (2)
    • JavaScript (0)
    • Computer Science (12)
      • 디자인패턴, 프로그래밍 패러다임 (1)
      • 네트워크 (4)
      • 운영체제 (4)
      • 데이터베이스 (3)
      • 자료구조 (0)
    • 알고리즘 (1)
    • 프로그래머스 (13)
    • 백준 (94)
    • 서평 (3)
    • 회고 (1)
    • TIL (58)
    • 기타 (1)

블로그 메뉴

  • 홈

공지사항

인기 글

태그

  • Java
  • 라즈베리파이4 #홈서버 #포트포워딩 #dhcp
  • TDD
  • 넥스트스텝
  • 클린코드

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ahlight

개발 저장소

프로그래머스

프로그래머스 - 디펜스 게임

2023. 5. 8. 18:01

1. 문제

https://school.programmers.co.kr/learn/courses/30/lessons/142085

 

프로그래머스

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

programmers.co.kr

 

2. 접근 방식

우선순위 큐를 이용해 풀어야한다.

 

3. 구현

import java.util.*;

class Solution {
    public int solution(int n, int k, int[] enemy) {
        int answer = 0;
        
        // 라운드 수가 무적권 수 이하이면 탐색할 필요가 없기에 바로 종료
        if (enemy.length <= k) {
            return enemy.length;
        }
        
        PriorityQueue<Integer> pq = new PriorityQueue<Integer>();
        for (int i=0; i<enemy.length; i++) {
            pq.add(enemy[i]);
            
            if (pq.size() > k) {
                n -= pq.poll();
            }
            // 라운드를 다 못 끝낸 경우
            if (n < 0) {
                return i;
            }
        }
        // 라운드를 다 끝낸 경우
        return enemy.length;
    }
}

 

4. 정리

문제를 처음 접근하며 정렬이 필요하다고 생각을 했는데 그렇게 되면 현재 라운드에 대한 파악이 안되는 문제가 생긴다. 그래서 우선순위 큐를 이용해 풀어야 한다. 단순 자료구조 활용에 대한 문제를 너무 깊게 파서 오히려 헤맸던 문제였다.

'프로그래머스' 카테고리의 다른 글

프로그래머스 - 2*n 타일링  (1) 2023.05.22
프로그래머스 - 게임 맵 최단거리  (0) 2023.05.09
프로그래머스 - 미로탈출  (0) 2023.05.01
프로그래머스 - 시소짝꿍  (0) 2023.03.16
프로그래머스 - 숫자 변환하기  (0) 2023.03.15
    '프로그래머스' 카테고리의 다른 글
    • 프로그래머스 - 2*n 타일링
    • 프로그래머스 - 게임 맵 최단거리
    • 프로그래머스 - 미로탈출
    • 프로그래머스 - 시소짝꿍
    ahlight
    ahlight

    티스토리툴바