프로그래머스 '다리를지나는 트럭' 다른 풀이방법을 봐도 어떻게 풀었는지 바로 이해가 안가서 내 방법대로 겨우 풀었다.... 똑똑한 사람 왜이렇게 많음..
- 내 방법
time 이라는 리스트를 만들어 현재 지나가고 있는 트럭의 시간을 함께 기록함으로써 시간체크를 한다.
ing와 time은 같은 index끼리 매칭 되어서 시간을 체크한다.
bridge_length = 2
ing = [4,5]
time = [2,1] 인 경우
4인 트럭은 2초된것으로 다음 차례에서는 already로 들어갈 것이고, 5인 트럭은 1초된것으로 1초가 더 지나야 완전히 지나갈 것이다.
time이 bridge_length가 되는 것을 기준으로 다리를 다 지나간 것을 체크하고, 다름 트럭을 본다.
- 코드
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
|
def solution(bridge_length, weight, truck_weights):
count = len(truck_weights)
answer = 0
already = [] #지나간 트럭
ing = [] #지나가고 있는 트럭
time = [] #ing의 트럭의 시간
totalweight = 0 # sum을 없애서 시간을 낮추기 위함
while len(already) != count:
num = True
while len(truck_weights) >= 1 and totalweight + truck_weights[0] <= weight:
totalweight += truck_weights[0]
ing.append(truck_weights.pop(0))
time.append(0)
num = False
for i in range(len(time)):
time[i] += 1
if time[0] == bridge_length: #시간 계산
time.pop(0)
totalweight -= ing[0]
already.append(ing.pop(0))
answer += 1
if num: #위에서 append 된 경우는, 시간계산 이미했으므로 False인 경우는 할 필요 없음
for i in range(len(time)):
time[i] += 1
answer += 1
if time[0] == bridge_length:
time.pop(0)
totalweight -= ing[0]
already.append(ing.pop(0))
answer += 1
return answer
|
cs |
'python > 파이썬 예제' 카테고리의 다른 글
파이썬 리스트 다중 조건 정렬(python Multiple conditions sort) (0) | 2021.04.28 |
---|---|
파이썬으로 최빈값 구하기 - list사용(최빈값 1개 vs 여러개) [#4-2] (2) | 2020.04.18 |
스도쿠가 정답인지 확인하는 코드 [#6] (0) | 2020.04.12 |
파이썬 행의 합, 열의합, 최대값 구하는 함수[#5] (0) | 2020.03.21 |
파이썬 최빈값 구하시-dictionary 사용 [#4-1] (0) | 2020.03.18 |