| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 31 |
Tags
- error
- 컴퓨터 공학
- 백엔드스쿨
- 백엔드공부
- 자료구조
- 제로베이스
- TestCode
- SpringBoot
- ORM
- 컴퓨터 구조
- Java
- SpringSecurity
- restTemplate
- JWT
- QueryDSL
- 핵심가이드
- 연관관계
- spring boot
- spring
- 프로그래머스
- 백준
- 스프링부트
- 서버
- JPA
- 개발자
- 백엔드
- array
- actuator
- LinkedList
- queue
Archives
- Today
- Total
be_better
[프로그래머스] 기능개발 본문
목차
💎 문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/42586?language=java
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
📝 문제

✍🏻 입력 & 출력

🤔 풀기 전에 생각하기
각 기능마다 speed가 다르기 때문에 남은 일 수를 먼저 계산하고 다음을 생각하는게 편할 것 같았다.
(100 - progresses[i]) / speeds[i];
queue에 남은 일 수를 순서대로 저장하고
다음 기능의 남은 일 수가 그 전 남은 일 수 보다 작으면 다음기능이 먼저 끝나는 것이기 때문에
앞의 기능이 배포될 때 같이 배포될 수 있게 된다.
제일 앞의 기능의 남은 일 수보다 큰 수가 나올 때 까지 같이 배포되는 기능이기 때문에int count = 1;을 선언해서 배열이나 ArrayList에 추가시켜준다.
✨ 풀이
import java.util.ArrayList;
import java.util.LinkedList;
public class Solution {
public int[] solution(int[] progresses, int[] speeds) {
ArrayList<Integer> answer = new ArrayList<>();
LinkedList<Integer> deque = new LinkedList<>();
for (int i = 0; i < progresses.length; i++) {
// 모든 큐를 돌면서, 남은 일수를 갱신해야 함
int days = (100 - progresses[i]) / speeds[i]; // 100에서 현재 진행 일수를 빼고 스피드를 나누면 남은 일 수가 나옴
if ((100 - progresses[i]) % speeds[i] > 0) {
days += 1; // int 계산이기 때문에 나머지가 발생했을 때 하루 더 증가시켜준다.
}
deque.offer(days); // 남은 일수를 큐에 저장
}
while (!deque.isEmpty()) {
int currentValue = deque.poll(); // 제일 앞 처음 배포되는 기능 저장
int count = 1; // 1일부터 시작해서 증가
while (!deque.isEmpty() && currentValue >= deque.peek()) {
/*
* peek, poll 에러 방지를 위해 empty체크
* 다음에 나올 남은 일수가 더 작으면 같이 배포되는 기능
*/
deque.poll(); // 같이 배포되는 기능이기 때문에 poll 해서 없애버린다.
count++; // 대신 같이 배포된다는 count는 증가
}
answer.add(count); // 남은 일 수가 더 크다면 다음날에 배포되는 기능이기 때문에 while문을 빠져나오고 list에 count값 추가
}
return answer.stream().mapToInt(i -> i).toArray();
}
}'코딩테스트 > 프로그래머스' 카테고리의 다른 글
| [프로그래머스] 프로세스 (0) | 2023.08.11 |
|---|---|
| [프로그래머스] 나누어 떨어지는 숫자 배열 (0) | 2023.08.09 |