https://burningjeong.tistory.com/37
헉ㅋㅋㅋ 보자마자 너무 반가웠다
이거 전에 푼 달팽이 문제 아녀!!
빨리 푼다고 풀었는데 그래도 시간 좀 걸렸네;
You can consider that Gabriel noticed the caterpillar just after the classes at 2 pm.
이 문장에서 좀 헷갈렸다.
가브리엘이 (가브리살 먹고싶다) 2시에 하교할 때만 확인하는지 아니면 2시 이후에도 계속 확인하는지 애매,,
학교 가는 시간이라도 알려줬으면 아 애가 2시부터 아침 8시까지 벌레만 봤구나 생각이라도 할텐데.
아래의 힌트를 보니 저녁 6시에 벌레가 사과 먹었다고 하는 것 보니 딱 2시 정각에만 확인하는 건 아니구나 싶었다.
그리고 저녁에는 벌레가 다시 내려가기 시작하니깐 사과에 도착할 리 없다. 그래서 2시 - 10시까지만 확인하기로 했음.
이 문장도 헷갈렸다.
벌레가 땅 밑으로 가면 사과로 올려보내 준다고??
내 생각엔 밤 돼서 땅 밑으로 내려가는 경우 고려하지 말라는 것 같음,,
로직은 이렇게 짰다.
처음에 a <= b인지 확인하려 했는데
이런 경우는 가능해서 첫 날에 도착하는지 먼저 확인했다.
다음으로 도착할 수 없는 경우 예외처리 해주고 날짜 계산했다.
계산식은 달팽이 문제 참고해서 풀었다.
하루에 올라갈 수 있는 거리 : 12(a - b)n
낮에 올라가는 거리 : 8a
낮은 12시간이지만 가브리엘이 확인하는 시간이 8시간이라 이 때를 낮으로 봤다.
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <functional>
#include <string>
#include <queue>
#include <stack>
#include <set>
using namespace std;
using i64 = long long;
using ii = pair<int, int>;
using ii64 = pair<i64, i64>;
int main() {
int h1, h2, a, b;
scanf("%d %d %d %d", &h1, &h2, &a, &b);
// cout << h1 << h2 << a << b;
int h = h2 - h1;
if (a*8 >= h)
{
printf("0");
return 0;
}
if (a <= b)
{
printf("-1");
return 0;
}
cout << (h - 8*a + 12*(a-b) -1) / (12 * (a-b));
return 0;
}
코드는 이렇게 짰음
'코드포스' 카테고리의 다른 글
[코드포스 Practice19] E. Tell Your World (0) | 2020.05.23 |
---|---|
[코드포스 Practice19] D. Minimize the error (0) | 2020.05.23 |
[코드포스 Practice20] B. OR in Matrix (0) | 2020.05.22 |
[코드포스 Practice20] A. Inventory (0) | 2020.05.22 |
[코드포스 Practice20] 후기 (0) | 2020.05.22 |