Algorithm/백준 자바
백준2979 자바
눈오는1월
2024. 1. 3. 00:22
728x90
<문제>
https://www.acmicpc.net/problem/2979
2979번: 트럭 주차
첫째 줄에 문제에서 설명한 주차 요금 A, B, C가 주어진다. (1 ≤ C ≤ B ≤ A ≤ 100) 다음 세 개 줄에는 두 정수가 주어진다. 이 정수는 상근이가 가지고 있는 트럭이 주차장에 도착한 시간과 주차장
www.acmicpc.net
<풀이>
위 문제는 배열을 이용해서 겹치는 구간을 하나씩 증가시킨다. 문제에서 입력으로 주어진 시간은 최대 100이므로 배열의 크기는 100으로 설정한다.
증가를 시킨 이후에 for문으로 배열의 값이 0,1,2,3 인지 확인해서 입력에 맞게끔 연산을 진행하면 된다.
<코드>
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int[] inputArr = new int[3];
int[] result = new int[100];
int sum = 0;
for (int i = 0; i < 3; i++) {
inputArr[i] = Integer.parseInt(st.nextToken());
}
for (int i = 0; i < 3; i++) {
StringTokenizer st1 = new StringTokenizer(br.readLine());
int start = Integer.parseInt(st1.nextToken());
int end = Integer.parseInt(st1.nextToken());
for (int j = start; j < end; j++) {
result[j]++;
}
}
//System.out.println(Arrays.toString(result));
for (int i = 0; i < result.length; i++) {
if (result[i] == 0) continue;
else if (result[i] == 1) {
sum += result[i] * inputArr[0];
} else if (result[i] == 2) {
sum += result[i] * inputArr[1];
} else if (result[i] == 3) {
sum += result[i] * inputArr[2];
}
}
System.out.println(sum);
}
}
728x90