반응형

이번주에 푼 문제는 [프로그래머스 - 스택/큐 - 기능개발] 문제입니다.

한동안 골치를 썩였는데 문제를 생각하니 참 ....어리석었다는 생각이 듭니다.

애초에 알고리즘을 설계할 때부터 제가 잘못된 것을 몰라서 오래 걸렸네요.

(다른 사람들의 답에 또 감탄을 합니다..)

 

문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/42586

 

코딩테스트 연습 - 기능개발 | 프로그래머스

프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇

programmers.co.kr

언뜻 보면 매우 간단한 문제지만 생각해야 될 부분이 2가지정도 있습니다.

 

1. 남은 시간 배열 만들기 : 저같은 경우에는 매우 어렵게 만들었습니다. 남은 양을 speed로 나눈 뒤 반올림을 했죠.

여기서 잘하시는 분들의 풀이를 보니 힌트를 얻은 부분은! -10 // 3은 -4라는 점입니다. 오랜만에 생각났습니다... 제 기억으로는 나머지는 무조건 양수가 되어야 하므로 -10 = 3 * -4(몫) + 2(나머지) 가 됐던 것 같습니다. 이를 활용하시면 더욱 쉽게 남은 시간 배열을 만들 수 있습니다.

 

2. 남은 시간 비교하기 : 처음 제가 문제를 풀지 못했던 이유는 배열의 각 요소를 다음 요소와(만) 비교하는 것을 계속 반복했기 때문이었습니다... 예를 들어, [50일, 25일, 3일, 24일] 이렇게 남은 시간을 구한 경우에는 다음과 같은 과정을 겪는다고 생각했습니다.

 

1) 50일 > 25일이므로 첫번째와 두번째 배포는 같이 이루어진다.

2) 25일 > 3일이므로 두번째와 세번째 배포는 같이 이루어진다.

3) 3일 > 24일이므로 앞의 3가지 배포는 이루어진다.

4) 24일 걸리는 배포가 혼자 마지막으로 이루어진다.

 

→ 답은 [3, 1] ! 이라고 생각했던 제가 바보였죠..

 

1) 50일 > 25일이므로 첫번째와 두번째 배포는 같이 이루어진다.

2) 50일 > 3일이므로 두번째와 세번째 배포는 같이 이루어진다.

3) 50일 > 24일 일이므로 4가지 배포는 모두 한번에 이루어진다.

 

답은 [4] !입니다.

 

즉, 미루어진 프로그램 배포 중에 가장 긴 시간이 걸리는 것과 비교해야 하는 것을 망각하고 있었습니다.. 혹시나 막히시는 분이 계시다면 이 점을 생각하시고! 답은 보지 마시고 한 번 다시 풀어보세요. 이상 끝 -!

 

 

 

반응형

+ Recent posts