프로그래머스: 기능개발
https://programmers.co.kr/learn/courses/30/lessons/42586
소스
1 | public int[] solution(int[] progresses, int[] speeds) { |
흐름
기능개발이 완료된 인덱스부터 반복하기 위해 start 변수 생성
기능개발이 끝날 때 까지 반복
개발이 안 끝난 기능 index 부터 돌면서 작업 속도를 더 함
개발이 안 끝난 기능 index 부터 돌면서 첫 번째 기능이 개발 됐는지 확인하고 안 끝났으면 3 번으로 돌아감
첫 번째 기능이 완료 되었으면 그 다음 기능개발을 위해 ++start 하고, deploy된 기능을 카운팅하는 deploy 변수를 증가
deploy한 기능이 있는 경우에만 list에 저장
ArrayList를 int[]로 변경
끝
다른 분의 소스
1 | public int[] solution(int[] progresses, int[] speeds) { |
로직
기능 갯수 만큼 돌면서 진도율과 날짜 * 개발 속도를 비교해서 100 보다 작으면 다음날로 증가시키고 크면 그 날짜에 저장되는 갯수를 증가시킴
대박
결과
1 번
번호 | 속도 |
---|---|
테스트 1 | 통과 (4.53ms, 50.8MB) |
테스트 2 | 통과 (5.07ms, 50.6MB) |
테스트 3 | 통과 (5.09ms, 52.8MB) |
테스트 4 | 통과 (5.29ms, 52.4MB) |
테스트 5 | 통과 (8.36ms, 55MB) |
테스트 6 | 통과 (4.95ms, 51.2MB) |
테스트 7 | 통과 (5.58ms, 52.6MB) |
테스트 8 | 통과 (5.18ms, 50.7MB) |
테스트 9 | 통과 (5.44ms, 52.5MB) |
테스트 10 | 통과 (5.22ms, 50.5MB) |
2 번
번호 | 속도 |
---|---|
테스트 1 | 통과 (6.60ms, 51.4MB) |
테스트 2 | 통과 (6.83ms, 53.1MB) |
테스트 3 | 통과 (6.92ms, 52.5MB) |
테스트 4 | 통과 (6.70ms, 52.8MB) |
테스트 5 | 통과 (19.88ms, 52.4MB) |
테스트 6 | 통과 (5.05ms, 50.7MB) |
테스트 7 | 통과 (7.01ms, 52.5MB) |
테스트 8 | 통과 (4.68ms, 50.5MB) |
테스트 9 | 통과 (6.95ms, 52.2MB) |
테스트 10 | 통과 (5.31ms, 50.8MB) |
- 두 소스 모두 Arrays.stream을 사용하지 않고 반복해서 저장하면 1초 대로 줄어듬.
- 확실히 스트림이 느린 듯함.
테스트 케이스
1 | assertArrayEquals(new int[] {2,1}, test.solution(new int[] {93, 30, 55}, new int[] {1, 30, 5})); |