๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/1449)
< ์๋ฆฌ๊ณต ํญ์น >
๋ฌธ์ ํ์ด
์ฐ์ ์์ ํ์ ๋ฌผ์ด ์๋ ๊ณณ์ ์์น์ ์ข์ฐ 0.5 ๊ฐ๊ฒฉ ์์น๋ฅผ ๋ฃ์ด์ค๋ค.
์ฐ์ ์์ ํ์์ ๊ฐ์ ๊บผ๋ด๋ฉฐ ํ ์ดํ์ ๊ธธ์ด๋ฅผ ๋ํ์ ๋ ๋ค์ ๊ฐ๊น์ง ํ ์ดํ๋ฅผ ๋ถ์ผ ์ ์๋์ง ์๋์ง ํ๋จํ์ฌ ํ ์ดํ์ ๊ฐ์๋ฅผ ๊ตฌํ๋ค.
my solution (Java)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.PriorityQueue;
import java.util.StringTokenizer;
public class _1449_ { // ์๋ฆฌ๊ณต ํญ์น
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 l = Integer.parseInt(st.nextToken());
st = new StringTokenizer(bf.readLine());
PriorityQueue<Double> queue = new PriorityQueue<>();
for (int i = 0; i < n; i++) {
int x = Integer.parseInt(st.nextToken());
queue.add(x - 0.5);
queue.add(x + 0.5);
}
double temp = queue.poll();
int result = 1;
boolean flag = false;
while (!queue.isEmpty()) {
if (temp + l > queue.peek()) {
queue.poll();
} else if (!flag && temp + l == queue.peek()) {
flag=true;
queue.poll();
} else {
temp = queue.poll();
result += 1;
flag=false;
}
}
System.out.println(result);
}
}
Main
๋ณ์)
n : ๋ฌผ์ด ์๋ ๊ณณ์ ๊ฐ์
l : ํ ์ดํ์ ๊ธธ์ด
queue : ์ฐ์ ์์ ํ
temp : ์ฐ์ ์์ ํ ๊ฐ
result : ํ ์ดํ์ ๊ฐ์
flag : ํ ์ดํ ๊ฒฝ๊ณ์ ์์น ์ฌ๋ถ
- ๋ฌผ์ด ์๋ ๊ณณ์ ๊ฐ์(n), ํ ์ดํ์ ๊ธธ์ด(l) ์ ๋ ฅ
- ๋ฌผ์ด ์๋ ๊ณณ์ ์์น๋ฅผ ์ ๋ ฅ๋ฐ์ ์ข์ฐ 0.5๋งํผ ๊ฐ๊ฒฉ์ ์ค ๊ฐ์ ์ฐ์ ์์ ํ์ ์ ์ฅ
- ์ด๊ธฐ ๊ฐ์ ์ฐ์ ์์ ํ์์ ๊บผ๋(temp)
- ์ฐ์ ์์ ํ๊ฐ ๋น ๋๊น์ง ๋ฐ๋ณต
: ํ์ฌ ์์น + ํ ์ดํ ๊ธธ์ด๊ฐ queue์ peek ๊ฐ ๋ณด๋ค ํฌ๋ค๋ฉด ํ ์ดํ ํ๋๋ก ๋ฌผ์ ๋ง์ ์ ์์ผ๋ฏ๋ก queue.poll
: ํ์ฌ ์์น + ํ ์ดํ ๊ธธ์ด๊ฐ qeuue์ peek ๊ฐ๊ณผ ์ผ์นํ๋ฉฐ flag ๊ฐ์ด false ๋ผ๋ฉด ์ฌ๊ธฐ๊น์ง ๋ฌผ์ ๋ง์ ์ ์์ผ๋ฏ๋ก flag๋ฅผ true ํ์ ๋ฐ queue.poll
: ์์ ๋ ๊ฐ์ง ๊ฒฝ์ฐ๊ฐ ์๋๋ผ๋ฉด ํ ์ดํ๋ก ๋ฌผ์ ๋ง์ ์ ์์ผ๋ฏ๋ก temp ๊ฐ ๊ต์ฒด ๋ฐ ํ ์ดํ ๊ฐ์ +1, flag ๊ฐ์ false๋ก ์ด๊ธฐํ
- ํ ์ดํ์ ๊ฐ์(reuslt) ์ถ๋ ฅ
* ๋ ๋ฒ์งธ ์กฐ๊ฑด์์ flag๋ฅผ ๋ ์ด์ ๋ ์๋ฅผ ๋ค์ด ์ฃผ์ด์ง ์์ ์ ๊ฐ์ด 3 2 1์ด ๋ฌผ์ด ์๋ ๊ณณ์ผ๋ก ๋ค์ด์ค๊ณ ํ ์ดํ์ ๊ธธ์ด๊ฐ 1๋ก ์ฃผ์ด์ง๋ค๋ฉด ์ฐ์ ์์ ํ์ 0.5 1.5 1.5 2.5 2.5 3.5๊ฐ ์ ์ฅ๋ ๊ฒ์ด๋ค. ๋ง์ฝ ๋ ๋ฒ์งธ ์กฐ๊ฑด์์ flag๊ฐ ์๋ค๋ฉด temp๊ฐ 0.5์ผ ๋ 1.5๊ฐ ๋ค poll ๋ ๊ฒ์ด๋ค. ๊ทธ๋ผ ๋ค์ temp ๊ฐ์ด 2.5๊ฐ ๋๊ณ ํ์ํ ํ ์ดํ์ ์๊ฐ 2๊ฐ ๋ ๊ฒ์ด๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด flag๋ฅผ ์ฌ์ฉํ๋ค.
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 2828_์ฌ๊ณผ ๋ด๊ธฐ ๊ฒ์ (1) | 2023.09.18 |
---|---|
[Baekjoon] 1213_ํฐ๋ฆฐ๋๋กฌ ๋ง๋ค๊ธฐ (0) | 2023.09.15 |
[Baekjoon] 1439_๋ค์ง๊ธฐ (0) | 2023.09.13 |
[Baekjoon] 1343_ํด๋ฆฌ์ค๋ฏธ๋ ธ (0) | 2023.09.11 |
[Baekjoon] 1976_์ฌํ ๊ฐ์ (0) | 2023.09.01 |