728x90
반응형

문제
17262번 : 팬덤이 넘쳐흘러

 

17262번: 팬덤이 넘쳐흘러

선물 포장 공장을 말아먹은 욱제는 계곡에서 백숙을 파느라 학교에 자주 가지 못한다. 하지만 월클의 인생은 피곤한 법! 욱제는 지금처럼 힘든 시기에도 자신을 기다리는 5조5억명의 열렬한 팬들을 위해 가끔씩 학교에 가 줘야 한다. 욱제는 백숙이 끓는 걸 지켜봐야 해서 가게를 오래 비울 수 없다. 그래서 욱제는 한 번 학교에 간 뒤 최소 시간동안 머물다가 모든 팬들과 한 번씩 인사를 하고 학교를 떠나려고 한다. 욱제는 임의의 시각에 학교에 오거나 학교를 떠날

www.acmicpc.net

내가 작성한 코드 (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
반응형
복사했습니다!