(Java) 프로그래머스 기능 개발

2021. 10. 17. 17:15·코딩 테스트

처음으로 큐를 사용한 문제를 풀어보았다. 큐의 개념은 알고 있었지만 실제로 어떻게 사용하는지 잘 몰랐었는데

실제로 문제를 풀다보니 대략 어떤 느낌인지 알 것 같다.

 

처음 풀 때는 기능 개발이 완료되어도 배포는 그 다음날에 한다는 조건을 잊고 올림 계산을 하지 않았다. 테스트 케이스에서 통과를 못했는데 한참 고민하다가 해결했다.

 


최종 코드

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
class Solution {
    public int[] solution(int[] progresses, int[] speeds) {
        // 완료 일자를 계산하기 위해 큐 생성
		Queue<Integer> day = new LinkedList<Integer>();
		for(int i=0; i<progresses.length; i++) {
			// 기능이 완료 되고 다음날 배포되므로 올림 계산
			day.add((int) Math.ceil((100.0 - progresses[i]) / speeds[i])); 
		}
		
		List<Integer> answer = new ArrayList();
		
		while(!day.isEmpty()) {
			// 큐에서 첫번째 값 꺼냄
			int result = day.poll();
			int count = 1;
				// 앞에 있는 기능이 뒤에 있는 기능보다 시간이 같거나 오래걸린다면
				while(!day.isEmpty() && result >= day.peek()) {
					// 첫번째 기능이 배포 될때 뒤에 있는 기능이 같이 배포됨
					count++;
					day.poll();
				}
			answer.add(count);
		}
		
		return answer.stream().mapToInt(i -> i).toArray();
    }
}

 

'코딩 테스트' 카테고리의 다른 글

(Java) 프로그래머스 행렬 테두리 회전하기  (0) 2021.10.17
(Java) 프로그래머스 더 맵게  (0) 2021.10.17
(Java) 프로그래머스 로또의 최고순위와 최저순위  (0) 2021.09.08
(Java) 프로그래머스 체육복  (0) 2021.09.01
(Java) 프로그래머스 직사각형 별 찍기  (0) 2021.08.13
'코딩 테스트' 카테고리의 다른 글
  • (Java) 프로그래머스 행렬 테두리 회전하기
  • (Java) 프로그래머스 더 맵게
  • (Java) 프로그래머스 로또의 최고순위와 최저순위
  • (Java) 프로그래머스 체육복
로승리
로승리
  • 로승리
    Roy's Blog
    로승리
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Issuefy
      • Language
      • Spring
      • Database
      • Network
      • Kubernetes
      • AWS
      • 코드스쿼드
      • 코딩 테스트
      • 생각정리
      • 국비지원
      • 회고
      • 컨퍼런스, 세미나
  • 블로그 메뉴

    • 홈
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
로승리
(Java) 프로그래머스 기능 개발
상단으로

티스토리툴바