[programmers] 프로그래머스 Level2 기능개발
(파이썬 Python)
* 문제출처 : 프로그래머스 코딩 테스트 연습, 알고리즘 문제
progress[i] + speed[i] x day >= 100
day >= 100 - progress[i] / speed[i]
를 바탕으로 문제를 해결해나가면 된다.
1) 문제
2) 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
def roundup(a, b) :
if (a % b) == 0 :
return int(a / b)
return int(a / b) + 1
def solution(progresses, speeds):
submit_day = []
for i in range(0, len(progresses)) :
left = 100 - progresses[i]
day = roundup(left, speeds[i])
submit_day.append(day)
answer = []
init_day = -1
cur_sum_summit_day = 0
for i in range(0, len(submit_day)):
if (init_day == -1) :
init_day = submit_day[i]
cur_sum_summit_day = 1
elif (init_day >= submit_day[i]):
cur_sum_summit_day += 1
else :
init_day = submit_day[i]
answer.append(cur_sum_summit_day)
cur_sum_summit_day = 1
answer.append(cur_sum_summit_day)
return answer
|
cs |
3) 풀이 과정
(1)
입출력의 예시를 통해 return [2,1]이 어떻게 나와있는지 우선 확인을 해야 한다.
progresses
[93, 30, 55]
speeds
[1, 30, 5]
위 배열 타입의 관계로 볼때
93 + 1x > = 100
x >= 7
x = 7
30 + 30x >= 100
30x>=70
x>=2
But
x = 3
55 + 5x >= 100
5x >= 45
x >= 9
즉, 나누어 떨어질때에는 그냥 값을 가지지만
나누어 떨어지지 않을때에는 +1을 올림을 해줘야 한다.
(2)
[7,3,9] - > [2, 1]
로 가는 것을 알아야 한다.
문제에서 보면, "뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발 될 수 있고, 이 때 뒤에 있는 기능은 앞에 있는 기능이 배포 될 때 함께 배포된다." 라는 문구가 보인다.
즉 7,3이 묶여 2로 되며
9는 따로 1로 되는 것이다.
(3)
summit_day = []의 경우는 7,3,9를 담기 위한 배열이다.
init_day = -1 로 설정한건 다음과 같다.
날짜는 절대 음수가 나올 수 없기 때문에, 그 다음에 오는 수들과 비교 했을 때 어떠한 문제가 되지 않는다. 그렇기에 초기 값으로 -1을 지정했다. 맨 처음 딱 한번만 체크하기 위한 용도이다.
아래의 테이블을 보면 확실히 이해가 갈거라 생각한다.
초기 | summit_day | 종료 | |||
7 | 3 | 9 | |||
summit_day | -1 | 7 | 7 | 9 | 9 |
cur_sum_summit_day | 0 | 1 | 2 | 1 | 1 |
answer | [] | [] | [] | [2] | [2,1] |
for i in range(0, len(day_to_summit):
if() # 7에 해당 하는 부분
elif() # 3에 해당 하는 부분
else # 9에 해당 하는 부분
4) 정리 노트
X
'*Algorithm > Programmers_Level2' 카테고리의 다른 글
[programmers] 프로그래머스 Level2 최대값과 최솟값(파이썬 Python) (0) | 2021.08.29 |
---|---|
[programmers] 프로그래머스 Level2 프린터(파이썬 Python) (0) | 2021.05.09 |
[programmers] 프로그래머스 Level2 카펫(파이썬 Python) (0) | 2021.05.09 |
[programmers] 프로그래머스 Level2 타겟 넘버 (파이썬 Python) (0) | 2021.04.24 |
[programmers] 프로그래머스 Level2 행렬의 곱셈(파이썬 Python) (0) | 2020.11.19 |
댓글