๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/15465)
< Milk Measurement >
๋ฌธ์ ํ์ด
ArrayList์ ์ ์ด๋ฆ, ํ์ฌ ์ฐ์ ์์ฐ๋์ ์ ์ฅํ๋ฉฐ ์์ฐ๋์ด ๋ณ๊ฒฝ๋ ๊ฐ ๋ ๋ง๋ค ์ฐ์ ์์ฐ๋์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ์ฌ ์ฌ์ง ๋ฐ๋ ์ฌ๋ถ๋ฅผ ๊ตฌํ๋ค.
my solution (Java)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashSet;
import java.util.StringTokenizer;
public class _15465_ { // Milk Measurement
static class Cow {
private String name;
private int milk;
private int day;
public Cow(String name, int milk) {
this.name = name;
this.milk = milk;
}
public Cow(String name, int milk, int day) {
this.name = name;
this.milk = milk;
this.day = day;
}
}
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int n = Integer.parseInt(bf.readLine());
ArrayList<Cow> list = new ArrayList<>();
list.add(new Cow("Bessie", 7));
list.add(new Cow("Elsie", 7));
list.add(new Cow("Mildred", 7));
ArrayList<Cow> cmd = new ArrayList<>();
for (int i = 0; i < n; i++) {
st = new StringTokenizer(bf.readLine());
int day = Integer.parseInt(st.nextToken());
String name = st.nextToken();
int milk = Integer.parseInt(st.nextToken());
cmd.add(new Cow(name, milk, day));
}
Collections.sort(cmd, new Comparator<Cow>() {
@Override
public int compare(Cow o1, Cow o2) {
return o1.day - o2.day;
}
});
int result = 0;
HashSet<String> set = new HashSet<>();
for (int i = 0; i < n; i++) {
for (int j = 0; j < 3; j++) {
if (list.get(j).name.equals(cmd.get(i).name)) {
list.get(j).milk += cmd.get(i).milk;
break;
}
}
Collections.sort(list, new Comparator<Cow>() {
@Override
public int compare(Cow o1, Cow o2) {
return o2.milk - o1.milk;
}
});
boolean flag = false;
for (int j = 0; j < 3; j++) {
if (list.get(j).milk == list.get(0).milk) {
if (!set.contains(list.get(j).name)) {
flag = true;
set.add(list.get(j).name);
}
} else {
if (set.contains(list.get(j).name)) {
flag = true;
set.remove(list.get(j).name);
}
}
}
if (flag) {
result += 1;
}
}
System.out.println(result);
}
}
๋ณ์)
n : ์ธก์ ํ์
list : ๊ฐ ์์ ๋ํด ์ฐ์ ์์ฐ๋
cmd : ์ธก์ ๊ธฐ๋ก
day, name, milk : ๋ ์ง, ์์ ์ด๋ฆ, ์ฐ์ ์์ฐ๋์ ๋ณํ๋
result : ๋ฒฝ์ ๊ฑธ์ด๋ ์์ ์ฌ์ง์ ๋ฐ๊ฟ์ผ ํ๋ ๋ ์ ์
์ธก์ ํ์๋ฅผ ์ ๋ ฅ๋ฐ๋๋ค. ArrayList์ ์ด๊ธฐ ๊ฐ 3๋ง๋ฆฌ์ ์์ ๋ํด ์ด๋ฆ๊ณผ ์ด๊ธฐ ์ฐ์ ์์ฐ๋ 7์ ์ ์ฅํ๋ค. ์ธก์ ํ์๋งํผ ์ธก์ ๊ฐ์ ์ ๋ ฅ๋ฐ์ ์๋ก์ด ArrayList์ ์ ์ฅํ๋ค. ์ธก์ ๊ฐ์ ์ ์ฅํ ArrayList๋ฅผ ๋ ์ง ๊ธฐ์ค ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ค. ์ธก์ ๊ฐ์ ์ดํด๋ณด๋ฉฐ ์์ ์ฐ์ ์์ฐ๋์ ๋ณํ์ํจ๋ค. ์ 3๋ง๋ฆฌ์ ์ ๋ณด๋ฅผ ์ ์ฅํ ArrayList๋ฅผ ์ฐ์ ์์ฐ๋ ๊ธฐ์ค ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ ํ ๋ฒฝ์ ๊ฑธ์ด๋ ์์ ์ฌ์ง์ ๋ฐ๊ฟ์ผ ํ๋์ง ํ๋ณํ๋ค. ๋ฐ๊ฟ์ผ ํ๋ค๋ฉด result๋ฅผ +1 ํ๋ค.
์ต์ข result๋ฅผ ์ถ๋ ฅํ๋ค.

'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Baekjoon] 17550_Inquiry I (0) | 2026.03.04 |
|---|---|
| [Baekjoon] 6119_Cow Line (0) | 2026.02.27 |
| [Baekjoon] 21236_Comfortable Cows (0) | 2026.02.26 |
| [Baekjoon] 11969_Breed Counting (0) | 2026.02.24 |
| [Baekjoon] 3022_PRASE (0) | 2026.02.23 |