우당탕탕 개발일지
[프로그래머스] 야근지수 (Java, Level.3) 본문
문제
1. 야근 피로도는 야근을 시작한 시점에서 남은 일의 작업량을 제곱하여 더한 값
2. N시간 동안 야근 피로도를 최소화하도록 일할 것.
3. 1시간 동안 작업량 1만큼을 처리 가능
퇴근까지 남은 N 시간과 각 일에 대한 작업량 works에 대해 최소 야근 피로도 구하기
입출력 예
풀이
많은 풀이들을 살펴보았다.
해당 풀이에 대한 분석을 한 결과, 큰수를 작은수가 되도록 하는것이 관건이었다.
더군다나 남은 일에 대한 제곱을 하기 때문에 일의 개수보다는 가장 큰 작업량을 줄이는 것이 중요하다.
따라서 우선순위 큐를 사용하였다.
1. 우선순위 큐
: 들어간 순서에 상관없이 일정한 규칙에 따라 우선순위 설정 후, 우선순위가 가장 높은 데이터가 먼저 출력
큐 사용법에 대해서는 해당 게시글을 보면서 공부하였다.
https://cocoon1787.tistory.com/774
[JAVA] Queue(큐) 사용법 (add vs offer / remove vs poll / element vs peek)
🚀 자바에서 큐를 사용하면서 값 추가, 삭제, 검색 메서드가 2개씩 있어서 어떠한 차이점이 있는지 알아보기 위해 정리해봤습니다. ⭐️ Queue 선언 Queue q = new LinkedList(); Integer형 선언 ⭐️ Queue에
cocoon1787.tistory.com
2. n시간동안 일을 처리하는 로직
1. 가장 큰값을 가져와 양수가 아닌지 확인
-> 값을 가져올때, 큐에서는 해당 값 제거
2. 양수일 경우 -1 한 후에 추가
-> 우선순위 큐를 사용했기에, 자동 내림차순 정렬 따라서 다음에도 가장 큰값을 가져올 수 있다.
3. 양수가 아닐 경우, 일 종료
3. 최솟값
while문을 사용하여 구하였다.
큐가 빈값이 될때까지 반복하였다.
size 함수를 사용하여 For문을 돌리지 않은 이유는 계속 size가 변하기 때문이다.
최종 코드
프로그래머스 문제
https://school.programmers.co.kr/learn/courses/30/lessons/12927
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
'코테 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 보석 쇼핑(Java, Level.3) (0) | 2024.04.02 |
---|---|
[프로그래머스] 숫자게임(Java, Level.3) (1) | 2024.04.01 |
[프로그래머스] 최고의 집합(Java, Level.3) (0) | 2024.03.19 |
[프로그래머스] 정수 삼각형(Java, Lv.3) (0) | 2024.03.12 |
[프로그래머스] 귤 고르기 (Java, Lv.2) (0) | 2024.03.06 |