일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 재귀함수가 뭔가요
- Spring
- MySQL server on 'db' (115)
- OperationalError
- classproperty
- 우아한 테크코스 2차 합격
- docker
- depends_on
- python
- 2차 코딩테스트
- docker-compose
- 우아한테크코스 2차
- 갓재석
- depends
- AWS S3
- EC2
- TypeError: 'property' object is not iterable
- DB
- springboot 3.0.0
- 프로그래머스
- METACLASS
- github skyline
- python all testcode
- javascript
- classmethod
- 코딩테스트
- AWS
- github
- Django
- S3
Archives
hanbin.dev
[코딩테스트] 프로그래머스 다리를 지나는 트럭 with Python 본문
문제 풀이 코드
def solution(bridge_length, weight, truck_weights):
# sum(다리를 건너는 트럭) + truck_weights[0] 가 weight이 안넘으면
# 다리를 건너는 트럭.append(truck_weights[0])
# 다리를 건너는 트럭[0][1] 을 시간이 지날때 마다 += 1 해줌
# 다리를 건너는 트럭[0][1] 이 weight보다 크거나 같으면
# 다리를 건너는 트럭[0] 을 다리를 지난 트럭으로 이동
# 위 과정을 반복
time = 0
truck_weights = list(map(lambda x : [int(x),0],truck_weights)) #1
current_bridge = []
while True:
time += 1
current_bridge = list(map(lambda x : [x[0],x[1] + 1],current_bridge)) #2
if len(current_bridge) > 0:
if current_bridge[0][1] > bridge_length: # 3
del current_bridge[0]
if len(truck_weights) > 0:
if sum(map(lambda x : x[0] ,current_bridge)) + truck_weights[0][0] <= weight: # 4
truck = truck_weights.pop(0)
current_bridge.append([truck[0],truck[1] + 1])
if len(current_bridge) + len(truck_weights) <= 0:
break
return time
#1
truck_weights 의 데이터 구조를 [무게, 현재 위치]
구조로 잡음현재 위치
: 다리를 어느정도 건넜는가 (대기 상태이면 0)
#2
시간이 지날 때 마다 트럭이 다리를 1만큼 이동함 (다리 위에 올라가 있는 트럭만)
#3
트럭이 다리를 모두 건넜다면 제거해줌
#4
다리에 트럭을 더 올릴수 있다면 올림
'코딩테스트' 카테고리의 다른 글
[코딩테스트] 전화번호 목록 with Python (0) | 2021.05.11 |
---|---|
[코딩테스트] 프로그래머스 프린터 with Python (0) | 2021.05.10 |
[코딩테스트] 프로그래머스 기능개발 with javascript (0) | 2021.05.07 |
[코딩테스트] 프로그래머스 체육복 with javascript (0) | 2021.05.06 |
[코딩테스트] 프로그래머스 베스트앨범 with javascript (0) | 2021.05.06 |