https://www.acmicpc.net/problem/10814
10814๋ฒ: ๋์ด์ ์ ๋ ฌ
์จ๋ผ์ธ ์ ์ง์ ๊ฐ์ ํ ์ฌ๋๋ค์ ๋์ด์ ์ด๋ฆ์ด ๊ฐ์ ํ ์์๋๋ก ์ฃผ์ด์ง๋ค. ์ด๋, ํ์๋ค์ ๋์ด๊ฐ ์ฆ๊ฐํ๋ ์์ผ๋ก, ๋์ด๊ฐ ๊ฐ์ผ๋ฉด ๋จผ์ ๊ฐ์ ํ ์ฌ๋์ด ์์ ์ค๋ ์์๋ก ์ ๋ ฌํ๋ ํ๋ก๊ทธ๋จ์
www.acmicpc.net
import java.io.FileInputStream;
import java.util.*;
class Main{
public static void main(String[] args) throws Exception{
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
String[] arr = new String[n];
sc.nextLine();
for(int i=0; i<n; i++){
arr[i] = sc.nextLine();
}
int[] ageSize = new int[n];
StringBuilder sb = new StringBuilder();
int idx = 0;
for(String input : arr){
String[] sp = input.split(" "); // ์ ์์๊ฐ ๋์ด
ageSize[idx++] = Integer.parseInt(sp[0]);
}
Arrays.sort(ageSize);
int cnt = 0;
while(cnt < n){
for(String input : arr){
String[] sp = input.split(" "); // ์ ์์๊ฐ ๋์ด
if(ageSize[cnt] == Integer.parseInt(sp[0])){
if(sb.indexOf(input) == -1){
sb.append(input).append("\n");
break;
}
}
}
cnt++;
}
System.out.println(sb);
sc.close();
}
}
์ค๋ต๋ ธํธ(ํธ๋ ๋์ ์ฌ๊ณ ๊ณผ์ ๋ฐ ๊ฐ์ ์ )
๋จ์ํ๊ฒ ์๊ฐํด์ ํ์๋๋ฐ ์๊ฐ์ด๊ณผ๊ฐ ๋๋ฒ๋ ธ๋ค. ์ฒ์๋ถํฐ ๋ก์ง์ ๋ค์ ์ง์ผ๋๋..
์ ๋ต์ฝ๋
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
List<String[]> members = new ArrayList<>();
for (int i = 0; i < N; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
int age = Integer.parseInt(st.nextToken());
String name = st.nextToken();
members.add(new String[]{Integer.toString(age), name});
}
members.sort((m1, m2) -> {
if (m1.age == m2.age) {
return 0;
}
return m1.age < m2.age ? -1 : 1;
});
for (String[] member : members) {
System.out.println(member[0] + " " + member[1]);
}
}
}
์ฌ๊ธฐ์ ๋๋จธ์ง๋ ์ด์ฐจํผ ๋๊ฐ์ ๊ตฌ์กฐ๋๊น ์ ๋ ฌ ๋ถ๋ถ๋ง ๋ณด๋๋ก ํ์. ๋๋ค์์ ์ฌ์ฉํด๋ดค๋ค.
members.sort((m1, m2) -> {
if (m1.age == m2.age) {
return 0;
}
return m1.age < m2.age ? -1 : 1;
});
Collections์ ์๋ sort๋ Comparator์ ์ฌ์ฉํ๋๋ฐ, ๋๋ค์์ผ๋ก ์ค์ฌ์ ์ฐ๋ ๊ฒฝ์ฐ๋ค. m1, m2๋ ๋น๊ตํ ๋ ๊ฐ์ฒด์ด๋ค. ์ฌ๊ธฐ์๋ List๋ฅผ ๊ฐ๋ member๊ฐ ๋๋ค.
Comparator์ sort๋ฅผ overrideํด์ ์ฌ์ฉํ๋๋ฐ, 0, -1, 1์ ๋ฐํ ๊ฐ ์ฐจ์ด๋ง ์ดํดํ๋ฉด ๋์ด๋ค. ์ด ์ฝ๋์์ 0์ ์ ๋ ฌ ๋ฐฉํฅ ๊ทธ๋๋ก, -1์ด๋ฉด m1์ด m2๋ณด๋ค ์์๊ฑธ๋ก ๋ฐฐ์น, 1์ด๋ฉด m1์ด m2๋ณด๋ค ํฐ๊ฑฐ๋ก ๋ฐฐ์นํ๋ค.
0์ผ ๋ ์์๊ฐ ๋ฐ๋ ์๋ ์์ง์๋๋ ํ ์ ์๋๋ฐ, ์ด๋ Collections.sort๋ ์ ๋ ฅ๋ ์์๋ฅผ ์ ์งํ๋ฉด์ ์ ๋ ฌํด์ค๋ค. stable ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ด๋ค.
๋์์ด ๋๋ค๋ฉด ๋๊ธ์ด๋ ๊ณต๊ฐ ๋ฒํผ ํ ๋ฒ์ฉ ๋๋ฅด๊ณ ๊ฐ์ฃผ์ธ์! ๋ก๊ทธ์ธ ์ํด๋ ๋ฉ๋๋ค ^_^
'OJ๐ผ > ์ค๋ต๋ ธํธ๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ][JAVA] 1260 : DFS์ BFS (0) | 2024.01.13 |
---|---|
[BOJ][JAVA] 1158 : ์์ธํธ์ค ๋ฌธ์ (0) | 2024.01.11 |
[BOJ][JAVA] 10816: ์ซ์ ์นด๋ 2 (0) | 2024.01.08 |
[BOJ][JAVA] 2295: ์ธ ์ ์ฐพ๊ธฐ (0) | 2024.01.07 |
[BOJ][JAVA] 1920: ์ ์ฐพ๊ธฐ (0) | 2024.01.07 |