백준 1011문제 입니다.
문제의 핵심은
속도의 곡선이 좌상향 우하향을 그리면서 그래프가 그려져야한다고 생각합니다.
Speed값을 루프마다 1씩 증가를 시키고, [Speed + Speed-1 + Speed-2 .... 1 ] 까지의 값을 계산해
다음에 오는 값을 미리 확인합니다.
이것을 now_length라고 정의 하였습니다.
만약 다음에 올 Speed의 값이 현재의 남은 거리 보다 크다면 그때부터는 Speed를 1씩 감소시켜 우하향 그래프를 그리도록 만듭니다.
즉, next_length = now_length + Speed + 1
if (next_length> length): Speed -= 1
그렇다면 도중에 now_length보다 남은거리가 크거나 같고, next_length보다 작다면?
이때는 Speed를 조정하지 않고 넘어갑니다.
제출한 코드가 시간 초과로 실패하였는데
일시적이 변수가 많아져서 코드가 햇갈리기 시작했으니 쓸모 없는 변수들을 정리하고,
now_length를 매번 계산하는게 연산을 많이 잡아먹는다고 생각했습니다.
저의 코드를 완벽하다고 생각하지않습니다.
수정할 부분이 있다면 언제든지 말씀해주시면 감사하겠습니다.
'항해99 > 알고리즘 마라톤' 카테고리의 다른 글
항해99 알고리즘 마라톤 32번 문제 [백준 1260번] (0) | 2021.06.24 |
---|---|
항해99 알고리즘 마라톤 30번 문제 [백준 1021번] (0) | 2021.06.23 |
항해99 알고리즘 마라톤 21번 문제 [백준 2805번] (0) | 2021.06.23 |
항해99 알고리즘 마라톤 14번 문제 [백준 2869번] (0) | 2021.06.23 |
항해99 알고리즘 마라톤 13번 문제 [백준 1436번] (0) | 2021.06.23 |