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

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

programmers.co.kr

 

 

<내 코드>

 

- Java

import java.util.*;

class Solution {
    public int[] solution(int[] progresses, int[] speeds) {
        
        List<Integer> temp = new ArrayList<>();
        List<Integer> result = new ArrayList<>();
        
        for(int i=0; i < progresses.length; i++){
            if((100-progresses[i]) % speeds[i] == 0){
                temp.add((100-progresses[i]) / speeds[i]);
            }else{
                temp.add(((100-progresses[i]) / speeds[i]) + 1);
            }
        }
        
        // 리스트 temp를 비교해 배포마다 몇 개씩 되는지 
        int cnt = 1;
        int ck = temp.get(0);
        for(int j=1; j < temp.size(); j++){
            if(ck >= temp.get(j)){
                cnt += 1;
            }else{
                result.add(cnt);
                ck = temp.get(j);
                cnt = 1;
            }
            
            if(j == (temp.size()-1)){
                result.add(cnt);
            }
        }
        
        // 리스트를 배열로 바꿔 출력
        int[] answer = new int[result.size()];
        for(int i=0; i<result.size(); i++){
            answer[i] = result.get(i);
        }

        return answer;
    }
}

 

- Python

def solution(progresses, speeds):
    answer = []
    temp = []

    for i in range(len(progresses)):
        days = (100 - progresses[i]) % speeds[i]
        if (days) == 0:
            temp.append((100 - progresses[i]) // speeds[i])
        else:
            temp.append((100 - progresses[i]) // speeds[i] + 1)

    ck = temp[0]
    cnt = 1
    for i in range(1, len(temp)):
        if ck >= temp[i]:
            cnt += 1
        else:
            ck = temp[i]
            answer.append(cnt)
            cnt = 1
            
        if i == (len(temp)-1):
            answer.append(cnt)

    return answer
반응형

+ Recent posts