def solution(prices):
time = [0] * len(prices)
for i in range(len(prices)-1) :
for j in range(i+1, len(prices)) :
if prices[i] > prices[j] :
time[i] += 1
break
else :
time[i] += 1
return time
풀이
time = [0] * len(prices)
먼저 prices 리스트의 길이만큼의 0으로 채워진 리스트를 만든다.
for i in range(len(prices)-1) :
for j in range(i+1, len(prices)) :
if prices[i] > prices[j] :
time[i] += 1
break
else :
time[i] += 1
1) 처음 for문은 끝까지 돌 필요가 없으므로 len(prices)-1 해준다. (마지막은 그다음 가격이 주어지지 않았으므로 무조건 0)
2) 두번째 for문은 처음 for문의 i+1 번째부터 시작한다. ( i가 3이면 j는 4부터 반복문 시작)
➀ 만약 prices[i] > prices[j] 라면 (다음 값보다 현재(prices[i])값이 더 크다면) time[i]에 1을 더해주고(이미 1초가 지났으므로) 두번째 for문을 종료한다. (처음 for문으로 돌아감)
➁ 그렇지 않다면 ( prices[i] <= prices[j] 경우), time의 i번째 값에 1을 더한다.
ex) prices = [1, 3, 4, 4, 5, 3] 이고, i=2 (for문을 한번 돈 상태) 라고 한다면, j는 3부터 for문을 시작한다.
1. time[2] = 4 , time[3] = 4 이므로 else문으로 가서 time[2] = 1 이 된다.
2. time[2] = 4, time[4] = 5 이므로 else문으로 가서 time[2] = 2가 된다.
3. time[2] = 4, time[5] = 3 이므로 if문으로 가 time[2] = 3이 되고 반복문을 탈출한다.
'Algorithm > Programmers' 카테고리의 다른 글
[Python] 약수의 합 (0) | 2021.04.27 |
---|---|
[Python] 시저 암호 (0) | 2021.04.26 |
[Python] 프린터 (0) | 2021.04.22 |
[Python] 다음 큰 숫자 (0) | 2021.04.19 |
[Python] 124 나라의 숫자 (0) | 2021.04.18 |