티스토리 뷰

programmers.co.kr/learn/courses/30/lessons/42583

 

 

코딩테스트 연습 - 다리를 지나는 트럭

트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이��

programmers.co.kr

문제는 이렇다.

시간 1초에 1만큼 다리를 지나고, 다리가 견딜수 있는 총 무게와 트럭들의 무게를 알려준다.

트럭들이 리스트 순서대로 다리를 이동한다면 총 몇초가 걸리겠는가?

 

첫 번째 풀이

첫 번째 풀이이다.

도착한 트럭 리스트인 arrive 트럭을 만들어서 도착한 리스트의 길이가 총 트럭갯수 리스트가 있는 truck_weights보다 작다면 while문으로 계속 반복시키는것을 맨 처음 작성했다.

 

다리위를 지나고 있는 트럭들을 담은 리스트로 무게를 재는것까지 같이해주었다.

트럭이 다리위를 지나고있는 시간은 별도로 timer라는 리스트를 만들어서 다리위에 트럭 인덱스가 추가될 때 마다 timer에도 숫자 0을 넣어서 연동하는 식으로 사용했다.

 

첫 통과

그래서 통과한 풀이. 효율성통과가 안될수도 있다고 생각했으나 통과가 되었다.

 

 

두 번째 풀이(효율성 증가시키기)

타이머의 길이가 0보다 크면 진행시켰던 if문을 timer가 true 면 실행하게 바꿔줬더니 효율성이 좀더 늘었다.

while문의 조건을 len(arrive_truck) != length : 로 고쳐주었을때 테스트5번의 효율성이 좀 더 늘었지만 나머지는 효율성이 오히려 떨어지는 결과가 나와 당황스러웠다.

두 번째 통과