코딩테스트 연습 - 기능개발 | 프로그래머스
프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇
programmers.co.kr
코드를 줄이고 싶어서 많은 시간을 썼지만 줄이지 못했습니다.
요소의 개수가 불분명 하므로 Arraylist를 사용해 각 작업마다 걸리는 기간을 삽입해주었습니다.
기준기간을 지나야만 작업이 완료된 것이므로 올림(ceil)을 해주었고
기준을 정해주어 뒤에 요소들과 비교하면서 배포할때 몇 개의 작업이 배포되는지를 세어주었습니다.
마지막으로 Arraylist를 int배열로 바꿔주는 작업을 하였습니다.
다른분들이 올린 더 짧은 풀이를 보았는데 저랑 푸는 방식이 달랐습니다.
작업진도(<100)와 작업속도(<=100)제한이 있으므로 아무리 배포가 늦어져도 99일 이내에는 개발이 되기 때문에
int []dayOfend 로 끝나는 날을 변수로 만들어서 ( int는 default값이 0입니다.)
각각의 작업에 대해 날짜(day)를 하루하루 더해줘서 작업기간에 해당하는 값을 dayOfend의 인덱스로 사용해서 값을 올려주었습니다.
그리고 마지막 변환과정도 stream으로
Arrays.stream(dayOfend).filter(i -> i!=0).toArray() 한 줄로 변환 할 수 있었습니다.
'Algorithm' 카테고리의 다른 글
프로그래머스 코딩테스트 연습 Level2 - 다리를 지나는 트럭 [ Java ] (0) | 2020.01.18 |
---|---|
프로그래머스 코딩테스트 연습 Level2 - 멀쩡한 사각형 [ Java ] (0) | 2020.01.17 |
백준 1541번 잃어버린 괄호 [ Java ] (0) | 2020.01.13 |
백준 11399번 ATM [ Java ] (0) | 2020.01.13 |
백준 1931번 회의실배정 [ Java ] (0) | 2020.01.12 |