본문 바로가기

CS/Algorithm

기능 개발

반응형

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

 

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

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

programmers.co.kr

 

레벨 2인데 난이도가 낮은편

배포 날짜를 구할 때 몫이 홀수라면 +1 해주는게 포인트

package question;

import java.util.ArrayList;

public class 기능개발
{

    public static void main(String [] args)
    {
        int [] progresss1 = {93, 30, 55};
        int [] speeds1 = {1, 30, 5};
        int [] result1 = {2, 1};

        int [] progresss2 = {95, 90, 99, 99, 80, 99};
        int [] speeds2 = {1, 1, 1, 1, 1, 1};
        int [] result2 = {1, 3, 2};


        System.out.println("결과 : " + toString(solution(progresss1, speeds1)));
        System.out.println("정답 : " + toString(result1));

        System.out.println();

        System.out.println("결과 : " + toString(solution(progresss2, speeds2)));
        System.out.println("정답 : " + toString(result2));
    }

    public static int[] solution(int[] progresses, int[] speeds)
    {
        ArrayList<Integer> answer = new ArrayList<>(progresses.length);
        int temp = 0;
        int count = 1;
        for (int i = 0; i < progresses.length; i++)
        {
            int remain = 100 - progresses[i];
            int speed = speeds[i];

            int mok = remain / speed;
            int etc = remain % speed;
            int day = etc == 0 ? mok : mok+1;

            if (i == 0)
            {
                temp = day;
            }
            else if (day <= temp)
            {
                count++;
            }
            else {
                answer.add(count);
                count = 1;
                temp = day;
            }

            if (i == progresses.length-1)
            {
                answer.add(count);
            }
        }

        int [] result = new int[answer.size()];

        for (int i = 0; i <answer.size(); i++)
        {
            result[i] = answer.get(i);
        }
        return result;
    }

    private static String toString(int [] result)
    {
        StringBuilder builder = new StringBuilder();
        builder.append("[");
        for (int i = 0; i<result.length; i++)
        {
            builder.append(result[i]);
            if (i < result.length-1)
            {
                builder.append(", ");
            }
        }
        builder.append("]");
        return new String(builder);
    }
}
반응형

'CS > Algorithm' 카테고리의 다른 글

짝지어 제거하기  (0) 2021.05.26
프린터  (0) 2021.05.18
바이너리 서치(이진 탐색)  (0) 2021.05.14
124 나라  (0) 2021.05.13
다트 게임  (0) 2021.05.11