๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/16206)
< ๋กค์ผ์ดํฌ >
๋ฌธ์ ํ์ด
๊ธธ์ด๊ฐ 10์ธ ๋กค์ผ์ดํฌ ๊ฐ์์ ์ต๋๊ฐ์ ๊ตฌํ๊ธฐ ์ํด์๋ ๋กค์ผ์ดํฌ๋ฅผ ์๋ฅด๊ธฐ ์ํด ๋ค์๊ณผ ๊ฐ์ ์ฐ์ ์์๋ฅผ ๋ถ์ฌํ๋ค.
1) 10์ผ๋ก ๋๋์ด ๋จ์ด์ง๋ ๊ฐ์ ๋จผ์ ์๋ฅด๊ธฐ
2) 10์ผ๋ก ๋๋์ด ๋จ์ด์ง๋ ์๊ฐ ์ฌ๋ฌ ๊ฐ๋ผ๋ฉด ์์ ๊ฐ์ ๋จผ์ ์๋ฅด๊ธฐ
์ด๋ ๊ฒ ์ฐ์ ์์๋ฅผ ๋ถ์ฌํ ์ด์ ๋ 20๊ณผ 30์ด ์์ ๋ 20์ ํ ๋ฒ ์๋ฅด๋ฉด 10์ 2๊ฐ ๋ง๋ค ์ ์์ง๋ง 30์ ํ ๋ฒ ์๋ฅด๋ฉด 10์ 1๊ฐ ๋ง๋ค ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
my solution (Java)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Comparator;
import java.util.PriorityQueue;
import java.util.StringTokenizer;
public class _16206_ { // ๋กค์ผ์ดํฌ
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(bf.readLine());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
int answer = 0;
PriorityQueue<Integer> queue = new PriorityQueue<>(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
if (o1 % 10 == o2 % 10) {
return o1 / 10 - o2 / 10;
}
return o1 % 10 - o2 % 10;
}
});
st = new StringTokenizer(bf.readLine());
for (int i = 0; i < n; i++) {
int num = Integer.parseInt(st.nextToken());
if (num == 10) {
answer += 1;
} else if (num > 10) {
queue.add(num);
}
}
while (m > 0 && !queue.isEmpty()) {
int num = queue.poll();
num -= 10;
answer += 1;
m -= 1;
if (num == 10) {
answer += 1;
} else if (num > 10) {
queue.add(num);
}
}
System.out.println(answer);
}
}
๋ณ์)
n, m : ๋กค์ผ์ดํฌ ๊ฐ์, ์๋ฅผ ์ ์๋ ์ต๋ ํ์
answer : ๊ธธ์ด๊ฐ 10์ธ ๋กค์ผ์ดํฌ ๊ฐ์์ ์ต๋๊ฐ
queue : ์ฐ์ ์์ ํ
๋กค์ผ์ดํฌ ๊ฐ์, ์๋ฅผ ์ ์๋ ์ต๋ ํ์๋ฅผ ์ ๋ ฅ๋ฐ๋๋ค. ์ด๋ค ๋กค์ผ์ดํฌ๋ฅผ ๋จผ์ ์๋ฅผ ๊ฒ์ธ์ง ์ฐ์ ์์ ํ๋ฅผ ํตํด ์ฐ์ ์์๋ฅผ ์ ํ๋ค. 10์ผ๋ก ๋๋์ด ๋จ์ด์ง๋ ๋กค์ผ์ดํฌ๋ฅผ ๋จผ์ ์๋ฅด๋, 10์ผ๋ก ๋๋์ด ๋จ์ด์ง๋ ๋กค์ผ์ดํฌ๊ฐ ์ฌ๋ฌ ๊ฐ๋ผ๋ฉด ์์ ๊ฐ๋ถํฐ ์๋ฅธ๋ค. n๊ฐ์ ๋กค์ผ์ดํฌ๋ฅผ ์ ๋ ฅ๋ฐ์ผ๋ฉด์ ๊ธธ์ด๊ฐ 10์ด๋ฉด answer+1, 10๋ณด๋ค ํฌ๋ฉด ์ฐ์ ์์ ํ์ ์ ์ฅํ๋ค. 10๋ณด๋ค ์์ผ๋ฉด ๋ต๊ณผ ์๊ด์์ด ๋๋ฌธ์ด๋ค.
์๋ฅผ ์ ์๋ ์ต๋ ํ์์ธ m์ด 0๋ณด๋ค ํฌ๊ณ ์ฐ์ ์์ ํ๊ฐ ๋น์ด์์ง ์๋ค๋ฉด ๋ค์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
1) queue poll
2) ๋กค์ผ์ดํฌ๋ฅผ 10๋งํผ ์๋ฅด๊ณ answer+1, ์๋ฅผ ์ ์๋ ์ต๋ ํ์-1
3) ์๋ฅด๊ณ ๋จ์ ๋กค์ผ์ดํฌ์ ๊ธธ์ด๊ฐ 10์ด๋ผ๋ฉด answer+1, ์๋ฅด๊ณ ๋จ์ ๋กค์ผ์ดํฌ์ ๊ธธ์ด๊ฐ 10๋ณด๋ค ํฌ๋ค๋ฉด queue์ ์ ์ฅ
๊ธธ์ด๊ฐ 10์ธ ๋กค์ผ์ดํฌ ๊ฐ์์ ์ต๋๊ฐ ์ถ๋ ฅ

'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 16987_๊ณ๋์ผ๋ก ๊ณ๋์น๊ธฐ (0) | 2024.03.04 |
---|---|
[Baekjoon] 5107_๋ง๋๋ (0) | 2024.03.01 |
[Baekjoon] 9421_์์์๊ทผ์ (1) | 2024.02.28 |
[Baekjoon] 3896_์์ ์ฌ์ด ์์ด (1) | 2024.02.27 |
[Baekjoon] 1124_์ธ๋ํ๋ผ์ (1) | 2024.02.26 |