๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/1713)
< ํ๋ณด ์ถ์ฒํ๊ธฐ >
๋ฌธ์ ํ์ด
ArrayList๋ฅผ 2๊ฐ ์ฌ์ฉํด์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค. ํ๋๋ ์ฌ์ง์ ์ ๋ณด์ธ ์ฌ์ง ๋ฒํธ, ์ถ์ฒ ์, ๊ฒ์๋ ์์๋ฅผ ์ ์ฅํ๋ฉฐ ๋ค๋ฅธ ํ๋์๋ ์ฌ์งํ์ ๊ฒ์ฌ๋ ์ฌ์ง์ ๋ฒํธ๋ง ์ ์ฅํ๋ค.
ํ์์ ์ถ์ฒํ๋ฉด, ์ด๋ฏธ ์ฌ์งํ์ ๊ฒ์๋ ์ฌ์ง์ธ์ง ํ์ธ ํ ๊ฒ์๋์ด ์๋ค๋ฉด ์ถ์ฒ ์๋ฅผ ์ฆ๊ฐํ๋ค. ์ด๋ฏธ ์ฌ์งํ์ ๊ฒ์๋์ด ์์ง ์๊ณ ์ฌ์งํ์ด ๊ฝ ์ฐจ์๋ค๋ฉด ์ถ์ฒ์๊ฐ ๊ฐ์ฅ ์ ๊ณ , ์ค๋๋ ์ฌ์ง์ ์ ๊ฑฐํ๊ณ ๋ค๋ฅธ ์ฌ์ง์ ๊ฒ์ํ๋ค.
my solution (Java)
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.StringTokenizer;
public class _1713_ { // ํ๋ณด ์ถ์ฒํ๊ธฐ
static class Draw {
private int person;
private int cnt;
private int seq;
private Draw(int person, int cnt, int seq) {
this.person = person;
this.cnt = cnt;
this.seq = seq;
}
}
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
int n = Integer.parseInt(bf.readLine());
int m = Integer.parseInt(bf.readLine());
ArrayList<Draw> list = new ArrayList<>();
ArrayList<Integer> arr = new ArrayList<>();
int idx = 0;
st = new StringTokenizer(bf.readLine());
for (int i = 0; i < m; i++) {
int num = Integer.parseInt(st.nextToken());
if (arr.contains(num)) {
for (int j = 0; j < list.size(); j++) {
if (list.get(j).person == num) {
list.get(j).cnt += 1;
}
}
} else {
if (list.size() >= n) {
Collections.sort(list, new Comparator<Draw>() {
@Override
public int compare(Draw o1, Draw o2) {
if (o1.cnt == o2.cnt) {
return o1.seq - o2.seq;
}
return o1.cnt - o2.cnt;
}
});
Draw draw = list.remove(0);
arr.remove(Integer.valueOf(draw.person));
}
arr.add(num);
list.add(new Draw(num, 1, idx++));
}
}
Collections.sort(arr);
for (int i = 0; i < arr.size(); i++) {
bw.write(arr.get(i) + " ");
}
bw.flush();
}
}
Main
๋ณ์)
Draw : [ํ์ ๋ฒํธ, ์ถ์ฒ ์, ๊ฒ์๋ ์์]
n : ์ฌ์งํ ๊ฐ์
m : ์ถ์ฒ ํ์
list : ArrayList <Draw>
arr : ArrayList <์ฌ์งํ์ ๊ฒ์๋ ์ฌ์ง ๋ฒํธ>
idx : ๊ฒ์๋ ์์
์ฌ์งํ์ ๊ฐ์(n)์ ์ ์ฒด ํ์์์ด ์ถ์ฒ ํ์(m)๋ฅผ ์ ๋ ฅ๋ฐ๋๋ค.
์ถ์ฒ๋ฐ์ ํ์์ ๋ํ๋ด๋ ๋ฒํธ๋ฅผ ์ ๋ ฅ(num) ๋ฐ์ ํ ์ฌ์งํ์ ์ด๋ฏธ ๊ฒ์๋์ด ์๋ ์ฌ์ง์ด๋ผ๋ฉด ๊ทธ ์ฌ์ง์ ์ถ์ฒ ์๋ฅผ ์ฆ๊ฐํ๋ค. ํ์ง๋ง ์ฌ์งํ์ ์๋ ํ์์ ์ฌ์ง์ด๋ผ๋ฉด ์ฌ์งํ์ด ๊ฝ ์ฐจ์๋์ง๋ฅผ ๋จผ์ ํ์ธํ๋ค. ์ฌ์งํ์ด ๊ฝ ์ฐจ์๋ค๋ฉด ์ฌ์ง์ ์ถ์ฒ์๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก, ์ถ์ฒ ์๊ฐ ๊ฐ๋ค๋ฉด ๊ฒ์๋ ์์๊ฐ ์ค๋๋ ์์์ธ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ ํ ์ถ์ฒ์๊ฐ ๋ฎ๊ณ , ์ค๋๋ ์ฌ์ง์ ์ ๊ฑฐํ๋ค. ๊ทธ ํ์ ์๋ก์ด ์ฌ์ง์ ๊ฒ์ํ๋ค.
์ต์ข ๊ฒ์๋ ์ฌ์ง์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ ํ ์ถ๋ ฅํ๋ค.
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 1916_์ต์๋น์ฉ ๊ตฌํ๊ธฐ (0) | 2023.11.10 |
---|---|
[Baekjoon] 1141_์ ๋์ฌ (1) | 2023.11.09 |
[Baekjoon] 9659_๋ ๊ฒ์ 5 (0) | 2023.11.07 |
[Baekjoon] 26215_๋ ์น์ฐ๊ธฐ (0) | 2023.11.06 |
[Baekjoon] 5545_์ต๊ณ ์ ํผ์ (0) | 2023.11.03 |