• 문제 링크
5464번: 주차장
시내 주차장은 1부터 N까지 번호가 매겨진 N개의 주차 공간을 가지고 있다. 이 주차장은 매일 아침 모든 주차 공간이 비어 있는 상태에서 영업을 시작하며, 하룻동안 다음과 같은 방식으로 운영
www.acmicpc.net
• 풀이 과정
• 풀이 코드
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
Pair[] area = new Pair[n + 1];
int[] weight = new int[m + 1];
for (int i = 1; i <= n; i++)
area[i] = new Pair(Integer.parseInt(br.readLine()));
for (int i = 1; i <= m; i++)
weight[i] = Integer.parseInt(br.readLine());
Queue<Integer> q = new LinkedList<>();
int income = 0;
int size = 0;
loop:
for (int i = 0; i < m * 2; i++) {
int car = Integer.parseInt(br.readLine());
if (car > 0) {
if (size < n) {
for (int j = 1; j <= n; j++) {
if (area[j].car == 0) {
area[j].car = car;
size++;
continue loop;
}
}
} else
q.offer(car);
} else {
for (int j = 1; j <= n; j++) {
if (area[j].car == -car) {
if (q.isEmpty()) {
area[j].car = 0;
size--;
} else
area[j].car = q.poll();
income += area[j].cost * weight[-car];
break;
}
}
}
}
bw.write(String.valueOf(income));
bw.flush();
}
private static class Pair {
int cost, car;
public Pair(int cost) {
this.cost = cost;
this.car = 0;
}
}
}
'Problem Solving > Baekjoon' 카테고리의 다른 글
[백준] 24511 queuestack - Data Structure / Java (0) | 2023.05.02 |
---|---|
[백준] 9872 Record Keeping - Data Structure / Java (0) | 2023.05.01 |
[백준] 14911 궁합 쌍 찾기 - Data Structure / Java (0) | 2023.04.29 |
[백준] 9733 꿀벌 - Data Structure / Java (0) | 2023.04.28 |
[백준] 12873 기념품 - Data Structure / Java (0) | 2023.04.27 |
댓글