알고리즘 문제풀이6

Keun·2022년 3월 17일
0

복습하기6

기능개발, 다리를 지나는 트럭

03/17/2022

목요일인 오늘은 코딩테스트를 연습하는 시간을 가진다. 10시부터 12시까지 총 2문제를 풀었으며, 기능개발 문제만 맞췄다. 다리를 지나는 트럭 문제를 틀린 이유는 시간부족과 그리고 문제 이해에서 빠르게 익히지 못한것 때문이였다. 태어나서 처음으로 알고리즘 푸는데 그래도 1문제 정도 맞은것에 나는 감사하다. 우선 내 머리는 비어있다는 가정하에, 책에 있는 기본적인 이론들과 구조들 머리에 때려박고, 그리고 문제를 양치기식으로 계속 풀면서 생각하는 식으로 1주일을 보냈다. 계속 이런식으로 익숙해지다보면 머리가 더 열릴것이라 믿는다.

기능개발

def solution(progresses, speeds):
    answer = []
    time = 0
    count = 0
    
    while len(progresses)> 0:
        if (progresses[0] + time*speeds[0]) >= 100: 
            progresses.pop(0)
            speeds.pop(0)
            count += 1
            
        else:
            if count > 0:
                answer.append(count)
                count = 0
            time += 1
    answer.append(count)
    return answer

처음에 접근을 그냥 하나하나 변수 디테일하게 생각해서 넣는 방식으로 했더니 무슨 코딩 줄이 50줄이 넘어갔다. 그리고 딱봐도 시간복잡도 따져봤을때 '아 이런식이면 컴퓨터 터진다' 라는 생각이 들었다.
풀이법에 대한 설명은 이분 블로그에 잘 나와있기에 가져왔다. 감사합니다!

https://huidea.tistory.com/15

다리를 지나는 트럭

이문제를 난 틀렸다. 시간부족도 있고, 이 문제를 풀고나서 풀이를 보고 깨달은 것은, 코딩이라는 것은 컴퓨터와의 소통을 위해 만든것이지만, 때로는 우리가 사용하는 언어처럼 추상적인것을 그림으로 표현하는 능력(?)도 필요하다는것이다.

def solution(bridge_length, weight, truck_weights):
    bridge = [0] * bridge_length
    time = 0

    while bridge:
        time += 1
        bridge.pop(0)   # 다리를 건너기

        if truck_weights:
            if truck_weights[0] + sum(bridge) <= weight:
                bridge.append(truck_weights.pop(0))
            else:
                bridge.append(0)

    return time

https://kyoung-jnn.tistory.com/entry/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4%ED%8C%8C%EC%9D%B4%EC%8D%ACPython-%EB%8B%A4%EB%A6%AC%EB%A5%BC-%EC%A7%80%EB%82%98%EB%8A%94-%ED%8A%B8%EB%9F%AD

bridge: 다리 위를 지나가는 트럭을 표현하기 위한 수단 (?)
bridge_length: 트럭이 동시에 지나갈수있는 수
weight: 다리 무게
truck_weights: 각 트럭들의 무게

오늘 문제풀이 결론:

  1. 너무 어렵게 생각하지마라. 어쨌든 구현이 목적이다.
  2. 내가 알고있는 지식으로 코딩을 짜는것을 두려워하지마라.
    예를들어 for문으로 해놓았다. 그러면 나중에 변형해도된다. 그러니까 처음에 손 대자마자 뭔가 근사한 코딩 짜려고 하지말고 어느정도 생각하고 짜자. 그러기 위해서는 아는게 많아야한다. 특히, 많이 푸는게 중요하다.
  3. for문과 while문 그리고 주머니 역할을 하는 변수 만들기, 스택, 큐, 연결리스트등을 잘 생각해보고 구현해보는 연습을 많이 해보자.

0개의 댓글

관련 채용 정보