빠똥빠똥
[프로그래머스] 무지의 먹방 라이브 - ☆ 본문
#문제링크 : programmers.co.kr/learn/courses/30/lessons/42891
<전략>
1. 블로그를 참고했습니다.
2. pair로 새로운 벡터v에 food_times의 시간값과 인덱스 값을 담는다.
3. v를 시간 값 순으로 먼저 정렬을 한다.
4. food_times의 요소의 갯수(사이클)를 size라 하겠다. v의 가장 작은 요소(현재 음식을 먹는데 걸리는 시간)부터 지난 음식을 먹는데 걸리는 시간(last_time)을 기준으로 (v[i] - last_time) * size 만큼 k에서 빼나간다. 이게 무슨 말이냐하면, 예를 들어, v벡터에 4 4 5 8 10 이 있고, k = 30 이라 할때, last_time의 초기값은 0으로 하고, v[i] = 4 이므로, ( 4 - 0 ) * 5 만큼 k에서 빼준다는 소리이다. 즉, 시간이 가장 적게 걸리는 요소를 전체 사이클만큼 빼준다는 소리다.
reps = (v[i] - last_time) * size 이라 하면, 매 반복마다 k보다 reps가 큰지 작은지를 따져줘야 한다. k보다 reps가 커지는 순간은 k값이 reps보다 작다는 소리고, 결국 남은 사이클 안에서 빙빙 돌다가 어떤 인덱스에 멈춘다는 의미이다. 반대로, 계속 k값이 reps보다 크다면 k값이 전체 음식시간을 다 소요하고도 남는다는 의미이므로, -1을 출력하면 된다.
5. 사이클은 한번의 reps를 빼줄때마다 줄어든다. 즉, size가 하나씩 줄어든다.
6. k<reps인 경우에, 남은 k를 현재 size만큼 나누고 남은 인덱스가 정답 인덱스가 된다.
'프로그래머스' 카테고리의 다른 글
[프로그래머스] 숫자의 표현(수학) - ☆ (0) | 2020.09.11 |
---|---|
[프로그래머스] 캐시(LRU, list, map) - ☆ (0) | 2020.09.11 |
[프로그래머스] 실패율 (0) | 2020.09.07 |
[프로그래머스] 다음 큰 숫자(브루트포스) (0) | 2020.09.04 |
[프로그래머스] 뉴스 클러스터링(문자열처리) (0) | 2020.09.03 |