이숭간 공부기록

[프로그래머스] 자바/파이썬 _ 기능개발 본문

알고리즘/프로그래머스

[프로그래머스] 자바/파이썬 _ 기능개발

이숭간 2021. 7. 9. 13:40
728x90

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

 

코딩테스트 연습 - 기능개발

프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는

programmers.co.kr

문제유형 : 스택

 

문제풀이

 

정답코드(파이썬):

from collections import defaultdict
def solution(progresses, speeds):
    answer = []
    
    daycount = defaultdict(int)
    # progresses가 빌때까지 100이 안넘을때만 시간을 1씩 증가시키면서 더해준다.
    # 더해가면서 맨앞의것이 100이넘었다면 해당 time을 인덱스로하는 배열에 1을 더해준다.
    time = 1
    while progresses:
        if(progresses[0]+time*speeds[0] < 100):
            time += 1
            continue
        progresses = progresses[1:]
        speeds = speeds[1:]
        daycount[time] += 1
        
    return list(daycount.values())

 

정답코드(자바) :

import java.util.ArrayList;
import java.util.List;
class Solution {
    public int[] solution(int[] progresses, int[] speeds) {
        
        List<Integer> answerList = new ArrayList<>();
        int[] dayCount = new int[100];
        int day = 0;
        
        for(int i=0; i<progresses.length; i++){
            while(progresses[i] + (day*speeds[i]) < 100){
                day += 1;
            }
           
            dayCount[day] += 1;
        }
        
        for(int i=0; i<dayCount.length; i++){
            if(dayCount[i]==0){
                continue;
            }else{
                answerList.add(dayCount[i]);
            }
            
        }
        
        int[] answer = new int[answerList.size()];
        
        for(int i=0; i<answerList.size(); i++){
            answer[i] = answerList.get(i);
            
        }
        
        return answer;
    }
}