Programmers > 스택/큐(Stack/Queue) > #30 기능개발

 

기능개발

 

문제: https://programmers.co.kr/learn/courses/30/lessons/42586

 

 

 

 

1. 문제 설명

 

프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다.

 

또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다.

 

 

먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요.

 

 

 

2. 나의 코드

 

- q: 완료되지 않은 모든 작업을 넣는 큐

- cq: 완료된 작업을 넣는 큐

- slist: 작업 스피드를 넣는 큐

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

- list: 해당 날짜에 완성된 작업의 개수를 넣는 ArrayList

- q와 slist를 각각 모든 작업과 작업속도를 넣는다.

- for문을 돌면서 모든 큐에 각요소에 해당하는 slist의 작업속도를 더한다.

- q.peek을 한 후 만약, top에 있는 작업이 100을 넘는다면, 100이 안넘는 작업이 나올때까지 cp에 100이 넘는 모든 작업을 넣는다.

- cp의 size를 list에 넣고 cp를 clear한다.

- list를 배열로 바꾼 후 리턴.  

 

 

 

import java.util.*;

class Solution {
    public int[] solution(int[] progresses, int[] speeds) {
        int[] answer = {};
        Queue <Integer> q = new LinkedList<>();
        Queue <Integer> cq = new LinkedList<>();
        Queue <Integer> slist = new LinkedList<>();
        ArrayList <Integer> list = new ArrayList<>();
        for(int i: progresses){
            q.offer(i);
        }
        for(int j: speeds){
            slist.offer(j);
        }
        while(!q.isEmpty()){
            int size = q.size();
            for(int i =0; i < size; i++){
                int temp = q.poll();
                int stemp = slist.poll();
                temp += stemp;
                q.offer(temp);
                slist.offer(stemp);
            }
            if(q.peek() >= 100){
                for(int j=0; j < size; j++){
                int temp2 = q.peek();
                if(temp2 >= 100){
                    cq.offer(q.poll());
                    slist.poll();
                }
                else
                    break;
                }
            list.add(cq.size());
            cq.clear();
            }
        }
        answer = new int[list.size()];
        for(int k=0;k <list.size();k++){
            answer[k] = list.get(k);
        }
        return answer;
    }
}

 

 

3. 다른사람 코드

 

- 각 작업당 필요한 날짜를 먼저 구해서 큐에 넣는다.

- 이후 for문을 돌면서, 위에 있는 남은 작업일수가 뒤에 있는 것 보다 크면, poll()을하고 count를 증가시킨다. 

 

for(int i=0; i<progresses.length; i++){
    int needDay = (100-progresses[i])/speeds[i];
    if((100-progresses[i])%speeds[i]!=0) needDay++;
    q.offer(needDay);
}

 

4. 보완

 

무작정 풀지말고, 좀만 생각해보면 기발한 아이디어가 나올것 같은데..

 

[출처] https://dreamhollic.tistory.com/entry/Programmers-%EC%8A%A4%ED%83%9D%ED%81%90StackQueue-30-%EA%B8%B0%EB%8A%A5%EA%B0%9C%EB%B0%9C?category=676734

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
918 1932 > DP > #37 정수 삼각형 졸리운_곰 2020.04.12 74
917 Programmers > 2018 서머코딩 > #36 예산 졸리운_곰 2020.04.12 65
916 9084 > DP> #35 동전 졸리운_곰 2020.04.07 101
915 BaekJoon _ 백준 1149 > DP> #34 RGB 거리 졸리운_곰 2020.04.02 91
914 BaekJoon _ 백준 1026 > 탐색> #33 보물 졸리운_곰 2020.04.02 89
913 Programmers > 연습문제 > #32 N-Queen 졸리운_곰 2020.04.01 60
912 Programmers > 연습문제 > #31 2 x n 타일링 졸리운_곰 2020.04.01 69
911 List of freely available programming books 졸리운_곰 2020.03.31 183
910 How to do pointers in Visual Basic file 졸리운_곰 2020.03.26 74
909 Linked List implementation in Visual Basic 졸리운_곰 2020.03.24 50
» Programmers > 스택/큐(Stack/Queue) > #30 기능개발 졸리운_곰 2020.03.23 64
907 Programmers > #28 winter recruit > #2 [JAVA] 졸리운_곰 2020.03.23 46
906 Programmers > 깊이/너비 우선 탐색(DFS/BFS) > #27 타겟 넘버 [JAVA] 졸리운_곰 2020.03.09 65
905 Programmers > 완전탐색 > #26 소수찾기(level 2) [JAVA] 졸리운_곰 2020.03.09 68
904 Programmers > #25 winter recruit > #1 [JAVA] 졸리운_곰 2020.03.08 46
903 Programmers > Level 1 > #24 소수찾기 [Python] 졸리운_곰 2020.03.08 65
902 Programmes > #23 문자열 내 마음대로 정렬하기 [Python] 졸리운_곰 2020.03.08 61
901 Programmers > Hash > #22 위장 [JAVA] 졸리운_곰 2020.03.07 54
900 Programmers > Sort > #21 H-Index [JAVA] 졸리운_곰 2020.03.07 60
899 [Programmers] #20 라면공장 [JAVA] 졸리운_곰 2020.03.06 83
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED