ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄ 곡뢀/C++

λ°±μ€€ 2460번 : μ§€λŠ₯ν˜• κΈ°μ°¨2 with C++

연이14 2023. 2. 25. 11:38

문제

μ΅œκ·Όμ— 개발된 μ§€λŠ₯ν˜• κΈ°μ°¨κ°€ 1λ²ˆμ—­(μΆœλ°œμ—­)λΆ€ν„° 10λ²ˆμ—­(μ’…μ°©μ—­)κΉŒμ§€ 10개의 정차역이 μžˆλŠ” λ…Έμ„ μ—μ„œ μš΄ν–‰λ˜κ³  μžˆλ‹€. 이 κΈ°μ°¨μ—λŠ” νƒ€κ±°λ‚˜ λ‚΄λ¦¬λŠ” μ‚¬λžŒ 수λ₯Ό μžλ™μœΌλ‘œ 인식할 수 μžˆλŠ” μž₯μΉ˜κ°€ μžˆλ‹€. 이 μž₯치λ₯Ό μ΄μš©ν•˜μ—¬ μΆœλ°œμ—­μ—μ„œ μ’…μ°©μ—­κΉŒμ§€ κ°€λŠ” 도쀑 κΈ°μ°¨ μ•ˆμ— μ‚¬λžŒμ΄ κ°€μž₯ λ§Žμ„ λ•Œμ˜ μ‚¬λžŒ 수λ₯Ό κ³„μ‚°ν•˜λ €κ³  ν•œλ‹€. 단, 이 κΈ°μ°¨λ₯Ό μ΄μš©ν•˜λŠ” μ‚¬λžŒλ“€μ€ μ§ˆμ„œ μ˜μ‹μ΄ νˆ¬μ² ν•˜μ—¬, μ—­μ—μ„œ 기차에 νƒˆ λ•Œ, 내릴 μ‚¬λžŒμ΄ λͺ¨λ‘ λ‚΄λ¦° 후에 기차에 탄닀고 κ°€μ •ν•œλ‹€.


예λ₯Ό λ“€μ–΄, μœ„μ™€ 같은 경우λ₯Ό μ‚΄νŽ΄λ³΄μž. 이 경우, κΈ°μ°¨ μ•ˆμ— μ‚¬λžŒμ΄ κ°€μž₯ λ§Žμ€ λ•ŒλŠ” 2λ²ˆμ—­μ—μ„œ 3λͺ…μ˜ μ‚¬λžŒμ΄ κΈ°μ°¨μ—μ„œ 내리고, 13λͺ…μ˜ μ‚¬λžŒμ΄ 기차에 탔을 λ•Œλ‘œ, 총 42λͺ…μ˜ μ‚¬λžŒμ΄ κΈ°μ°¨ μ•ˆμ— μžˆλ‹€.

이 κΈ°μ°¨λŠ” λ‹€μŒ 쑰건을 λ§Œμ‘±ν•˜λ©΄μ„œ μš΄ν–‰λœλ‹€κ³  κ°€μ •ν•œλ‹€.

  1. κΈ°μ°¨λŠ” μ—­ 번호 μˆœμ„œλŒ€λ‘œ μš΄ν–‰ν•œλ‹€.
  2. μΆœλ°œμ—­μ—μ„œ λ‚΄λ¦° μ‚¬λžŒ μˆ˜μ™€ μ’…μ°©μ—­μ—μ„œ 탄 μ‚¬λžŒ μˆ˜λŠ” 0이닀.
  3. 각 μ—­μ—μ„œ ν˜„μž¬ 기차에 μžˆλŠ” μ‚¬λžŒλ³΄λ‹€ 더 λ§Žμ€ μ‚¬λžŒμ΄ λ‚΄λ¦¬λŠ” κ²½μš°λŠ” μ—†λ‹€.
  4. 기차의 정원은 μ΅œλŒ€ 10,000λͺ…이고, 정원을 μ΄ˆκ³Όν•˜μ—¬ νƒ€λŠ” κ²½μš°λŠ” μ—†λ‹€.

10개의 역에 λŒ€ν•΄ κΈ°μ°¨μ—μ„œ λ‚΄λ¦° μ‚¬λžŒ μˆ˜μ™€ 탄 μ‚¬λžŒ μˆ˜κ°€ μ£Όμ–΄μ‘Œμ„ λ•Œ, 기차에 μ‚¬λžŒμ΄ κ°€μž₯ λ§Žμ„ λ•Œμ˜ μ‚¬λžŒ 수λ₯Ό κ³„μ‚°ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

μž…λ ₯

각 μ—­μ—μ„œ λ‚΄λ¦° μ‚¬λžŒ μˆ˜μ™€ 탄 μ‚¬λžŒ μˆ˜κ°€ λΉˆμΉΈμ„ 사이에 두고 첫째 쀄뢀터 μ—΄ 번째 μ€„κΉŒμ§€ μ—­ μˆœμ„œλŒ€λ‘œ ν•œ 쀄에 ν•˜λ‚˜μ”© μ£Όμ–΄μ§„λ‹€. 

좜λ ₯

첫째 쀄에 μ΅œλŒ€ μ‚¬λžŒ 수λ₯Ό 좜λ ₯ν•œλ‹€.

#include <iostream>
using namespace std;

int main() {
	int out[10], in[10];
	// out : 각 μ—­μ—μ„œ λ‚΄λ¦¬λŠ” μ‚¬λžŒ, in : 각 μ—­μ—μ„œ νƒ€λŠ” μ‚¬λžŒ
	for (int i = 0; i < 10; i++) {
		cin >> out[i] >> in[i];
	}

	int num = 0, max = 0;	// num : 타고 μžˆλŠ” μ‚¬λžŒ 수, max : μ΅œλŒ€ μ‚¬λžŒ 수
	for (int i = 0; i < 10; i++) {
		num -= out[i];
		num += in[i];
		if (num > max) {
			max = num;
		}
	}

	cout << max;	// μ΅œλŒ€ μ‚¬λžŒ 수 좜λ ₯

	return 0;
}