BOJ 2980 도로와 신호등


사용한 알고리즘

  • 구현

알고리즘 설명

  • 달팽이는 올라가고 싶다가 생각나는 문제이다.
  • 위 문제보다는 정말 간단하다…
  • 신호등의 각 위치는 오름차순으로 주어지므로 sort할 필요는 없다
  • 알고리즘은 다음과 같다
    1. 신호등 위치까지 움직인다
    1. 현재 시간에 기다려야하는 시간을 구한다
    1. 1,2번을 마지막 신호등까지 반복한다
    1. 현재 지점에서 L까지 걸어간다.

풀이

// baekjoon 2980 yechan
#include <bits/stdc++.h>
using namespace std;
const int MAX_N=101;

int N, L;

int wait_light(int t, int r, int g) {
    t %= (r+g);
    if (t < r) return r-t;
    return 0;
}

int main() {
    scanf("%d%d", &N, &L);
    int cur_time=0, cur_pos = 0;
    for (int i=0; i<N; i++) {
        int D, R, G;
        scanf("%d%d%d", &D, &R, &G);
        // move pos(D)
        cur_time += (D - cur_pos);
        cur_pos = D;

        // wait light
        cur_time += wait_light(cur_time, R, G);
    }
    if (cur_pos < L) cur_time += L - cur_pos;
    printf("%d\n", cur_time);
    return 0;
}



© 2020.08. by fbdp1202

Powered by theorydb