본문 바로가기
공부

BOJ 2455 지능적이게 풀지 못 한 문제..

by 뜨응 2022. 3. 4.

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

 

2455번: 지능형 기차

최근에 개발된 지능형 기차가 1번역(출발역)부터 4번역(종착역)까지 4개의 정차역이 있는 노선에서 운행되고 있다. 이 기차에는 타거나 내리는 사람 수를 자동으로 인식할 수 있는 장치가 있다.

www.acmicpc.net

 

오랜만에 문제를 푸는 거라 진짜 쉬운 걸로 워밍업을 하려고했는데.. 두번의 실패를 겪었다...

집중을 잘 못했던 건지.. 그냥 멍청했던건지..  뭐 둘 다인 것 같다.

 

이 문제는 4개의 역 중에서 기차에 가장 사람이 많았을 때 사람의 수?를 구하면 되는 문제였다.

탄사람과 내린 사람의 차이를 첫번째 역에서 탄 사람에 더해가면서 그 중 가장 큰 수를 구하면 된다. 

처음 코드는 진짜 풀면서도 이렇게 하는거 맞나..? 이렇게까지 한다고..? 이런 생각이 계속 드는 풀이였다..

#include<iostream>
using namespace std;

int a[4][2];
int b[4];
int temp[2];
int maxi ;

int main() {
	cin.sync_with_stdio(0);
	cin.tie(0);

	for (int i = 0; i < 4; i++) {
		for (int j = 0; j < 2; j++) {
			cin >> a[i][j];
		}
	}
	for (int k = 0; k < 4; k++) {
		b[k] = a[k][1] - a[k][0];
	}
	maxi = b[0];
	temp[0] = b[0] + b[1];
	temp[1] = b[0] + b[1] + b[2];
	if (maxi < temp[0] || maxi < temp[1]) {
		if (temp[0] > temp[1]) maxi = temp[0];
		else maxi = temp[1];
	}
	cout << maxi;
}

바로 이 코드인데 굳이 2차원 배열이 필요했는지.. ? 

두번째 코드는 

#include<iostream>
using namespace std;

int a, b;
int maxi ,temp;

int main() {
	cin.sync_with_stdio(0);
	cin.tie(0);

	for (int i = 0; i < 4; i++) {
		
			cin >> a >>b;
			temp += (b - a);
			if (maxi < temp) maxi = temp;
			
	}
	cout << maxi;
}

이 코드였다. 

 

쉬운 문제였는데.. 멍청이마냥 시간이 굉장히 오래걸렸다..

 

모호한 max..

왜 모호하다고 했는지 알 수가 없다.. 왜인가요?

'공부' 카테고리의 다른 글

Stack과 Queue BOJ 10845, 9012, 4949  (9) 2022.05.26
소수의 굴레 BOJ 1978,1929, 2581  (5) 2022.05.06
나의 휴학 계획을 세우다.  (5) 2022.03.02
BOJ 14425 해결 그리고 시간초과  (0) 2022.01.16
BOJ 10773 해결과 개선  (0) 2022.01.13