-
기능개발알고리즘/프로그래머스 2020. 9. 8. 17:24
public int[] solution(int[] progresses, int[] speeds) { int[] answer = {}; Map<Integer, Integer> tempMap = new TreeMap<Integer, Integer>(); int previousDDay = 0; for(int i=0; i<progresses.length; i++) { int progress = progresses[i]; // 93 int speed = speeds[i]; // 1 int remainProgress = 100-progress; // 7 int dDay = 1; while((dDay*speed) < remainProgress) { dDay++; } if(i!=0) { if(previousDDay < dDay) { previousDDay = dDay; tempMap.put(dDay, 1); }else { tempMap.put(previousDDay, tempMap.get(previousDDay)+1); } }else { previousDDay = dDay; tempMap.put(dDay, 1); } } answer = new int[tempMap.size()]; int idx = 0; for(int tempKey : tempMap.keySet()) { answer[idx] = tempMap.get(tempKey); idx++; } return answer; }
HashMap은 넣는 순서가 보장 안됨, 때문에 TreeMap 사용해야함.
다른 사람 풀이중 lamda filter 이용한거 있어서 가져옴.
int[] dayOfend = new int[100]; int day = -1; for(int i=0; i<progresses.length; i++) { while(progresses[i] + (day*speeds[i]) < 100) { day++; } dayOfend[day]++; } return Arrays.stream(dayOfend).filter(i -> i!=0).toArray();
'알고리즘 > 프로그래머스' 카테고리의 다른 글
최댓값 최솟값 찾기 (0) 2020.09.22 카카오 - 데모 테스트 (0) 2020.09.11 예산 (0) 2020.09.07 체육복 - 탐욕법 (0) 2020.08.20 [1차] 비밀지도 (0) 2020.08.20