본문 바로가기

Algorithm/Implementation

(C++) - 백준(BOJ) 20867 : Rulltrappa

반응형

https://www.acmicpc.net/problem/20867

 

20867번: Rulltrappa

I exempel 1 är båda köer tomma, så Paulina kan omedelbart börja gå upp längs rulltrappan. Om hon står stilla i rulltrappan färdas hon med 1 trappsteg per sekund, så det tar $\frac{50}{1} = 50$ sekunder. Om hon istället går upp i rulltrappan fä

www.acmicpc.net

번역이 어려웠던 구현 문제였습니다.

📕 풀이방법

📔 입력 및 초기화

 1. 에스컬레이터 계단 개수m, 서서 갈 때 초당 지나치는 계단 개수s, 걸어서 올라갈 때 초당 지나치는 계단 개수g, 걸어 올라갈 때 속도l, 서서 올라갈 때 속도 r, 왼쪽열 대기인원 a, 우측열 대기인원 b를 선언 후 입력해줍니다.

 2. 걸어 올라갈 때 도착까지 걸리는 시간초ls, 서서 올라갈 때 도착까지 걸리는 시간초rs, 왼쪽열에 타려면 기다려야하는 시간초lwait, 우측열에 타려면 기다려야하는 시간초rwait를 선언해줍니다.

 

📔 풀이과정

다음 공식들이 성립합니다.

 1. lwait = 걸어올라갈 때 속도 / 왼쪽열 대기인원 2. rwait = 서서올라갈 때 속도 / 우측열 대기인원 3. ls = 계단 개수 / 걸어 올라갈 때 초당 지나치는 계단 개수 4. rs = 계단 개수 / 서서 올라갈 때 초당 지나치는 계단 개수속도가 더 빠른 것이 금방 올라가는 법입니다하지만 그 중 더 오래걸리는 대기열은 선택하면 안됩니다.

📔 정답출력

조건에 맞게 출력해줍니다.


📕 Code

#include <bits/stdc++.h>
using namespace std;
int m, s, g, l, r;
double a, b;
int ls, rs, lwait, rwait;
int main(){
    cin >> m >> s >> g >> a >> b >> l >> r;
    lwait = l / a, rwait = r / b;
    ls = m % g ? m / g + 1 : m / g; 
    rs = m % s ? m / s + 1 : m / s; 
    if(ls < rs) {
        if(ls + lwait < rs + rwait) cout << "friskus";
        else cout << "latmask";
    }
    else {
        if(ls + lwait < rs + rwait) cout << "friskus";
        else cout << "latmask";
    }
}