728x90
반응형
내가 작성한 코드 (C++ 성공)
#include <iostream>
#include <cmath>
using namespace std;
int main(){
cin.tie(0);
int n;
cin>>n;
int s[100001];
int e[100001];
int min = 100001;
int max = 0;
int time = 0;
for(int i=0; i<n; i++){
cin >> s[i] >> e[i];
if(e[i] < min) min = e[i];
if(s[i] > max) max = s[i];
}
int gap = max-min;
if(gap < 0) time = 0;
else time = gap;
cout << time;
return 0;
}
정리
"가장 빨리 하교하는 사람의 하교 시간"과 "가장 늦게 등교하는 사람의 등교 시간"을 빼주면 되는 문제였다.
"가장 늦게 등교하는 사람의 등교 시간" - "가장 빨리 하교하는 사람의 하교 시간" |
두 개의 값을 뺀 값이 양수라면 그 시간만큼 학교에 머무른 것이고
뺀 값이 음수가 나온다면 한번에 다 인사를 할 수 있기 때문에 머무는 시간은 0이 된다.
예를 들어,
A 는 시각 1 등교 , 시각 4 하교
B 는 시각 5 등교 , 시각 6 하교
그럼 최소한의 시간으로 인사할 수 있는 경우는 시각 4에 가서 시각 5에 오는 것이다.
5 (가장 늦게 등교하는 사람의 등교시간) - 4 (가장 빨리 하교하는 사람의 하교 시간) = 1 이 된다.
따라서, 학교에 머무는 시간은 1이 된다.
또 다른 예를 들어,
A 는 시각 1 등교 , 시각 3 하교
B 는 시각 2 등교 , 시각 4 하교
C 는 시각 2 등교 , 시각 5 하교
그럼 최소한의 시간으로 인사할 수 있는 경우는 시각 3에 와서 다 인사할 수 있다.
2 (가장 늦게 등교하는 사람의 등교시간) - 3 (가장 빨리 하교하는 사람의 하교 시간) = -1
음수기 때문에 한 번에 인사할 수 있는 시간이 되기 때문에 학교에 머무는 시간은 0이 된다.
처음에 이 문제를 잘못 이해해서 여러 번 틀린 후에 문제를 다시 재해석해서 풀었다.
그런데 막상 풀고나니 엄청 간단한 문제였다.
내가 너무 어렵게 생각했었나보다. 문제를 어떻게 접근할 수 있을지 쉽게 생각해볼 필요를 느꼈다.
728x90
반응형
'알고리즘 > BaekJoon' 카테고리의 다른 글
백준 알고리즘 문제 풀이 중간 점검 (0) | 2019.08.13 |
---|---|
[백준 알고리즘] 17256번 : 달달함이 넘쳐흘러 (0) | 2019.08.12 |
[백준 알고리즘] 17294번 : 귀여운 수~ε٩(๑> ₃ <)۶з (0) | 2019.08.01 |
[백준 알고리즘] 10828번 : 스택 (0) | 2019.07.31 |
[백준 알고리즘] 10773번 : 제로 (0) | 2019.07.31 |