2979 - 트럭 주차

재찬·2022년 12월 30일
0

Algorithm

목록 보기
5/64

문제

코드

#include <bits/stdc++.h>
using namespace std;

int main(){
	
	int arr[101] = {0, };
	int a, b, c;
	int s, e;
	int sum = 0;
	
	cin >> a;
	cin >> b;
	cin >> c;
	
	for(int i = 0; i < 3; i++){
		cin >> s;
		cin >> e;
		
		for(int j = s; j < e; j++ ){
			arr[j]++;
		}
	}
	
	for(int i = 0; i < 101; i++){
		if(arr[i] == 1){
			sum += arr[i] * a;
		}
		else if(arr[i] == 2){
			sum += arr[i] * b;
		}
		else if(arr[i] == 3){
			sum += arr[i] * c;
		}
	}
	
	cout << sum;
	
	return 0;
}

풀이

시간의 최대 범위가 100이라고 하였으니 여유있게 101 사이즈로 설정하고 0으로 초기화 한다.
a, b, c원의 가격을 입력받고 start시간과 end 타임을 입력 받는다.
여기서 중요하다고 생각한 점은 포함관계이다.
들어온 시간부터 나간 시간이면 나간 시간대는 포함을 하느냐 안하느냐에 따라 결과 값이 달라지기 때문이다. 예시로 1시부터 3시면 1-2 2-3 총 2시간이기 때문에 뒤에 end는 포함하지 않아야 한다.
해당 시간의 배열을 증가 시키고 가격을 곱해 전부 더해주면 된다.

결과

틀린 이유가 뭔지 봤는데 sum을 초기화 하지 않았을 때 오류가 발생하며 오답처리가 되었다. 연산이 들어가는 변수는 웬만하면 초기화 해주는 것이 좋을 듯 하다.

후기

아이디어 자체는 크게 어렵지 않은 문제였다. 특별한 자료구조나 알고리즘이 쓰이지도 않은듯 했다. 포함관계의 중요성을 느껴볼 수 있는 문제라 생각한다.

0개의 댓글