์ฝ๋
import java.util.*;
class Solution {
public String[] reorderLogFiles(String[] logs) {
// ๋ฌธ์ ์ซ์ ๋ก๊ทธ ๋ฆฌ์คํธ
List<String> letterLogs = new ArrayList<>();
List<String> digitLogs = new ArrayList<>();
for (String log : logs) {
// ์๋ณ์ ๋ถ๋ฆฌ ๋ก์ง
// indexOf()๋ก ์ฒซ๋ฒ์งธ ๊ณต๋ฐฑ ์ธ๋ฑ์ค ๋ฐํ
int space = log.indexOf(" ");
String id = log.substring(0, space);
String content = log.substring(space +1);
// ๋ฌธ์ ์ซ์ ๋ก๊ทธ ๋ถ๋ฆฌ ๋ก์ง
if (Character.isDigit(content.charAt(0))) {
digitLogs.add(log);
} else {
letterLogs.add(log);
}
}
// ๋ฌธ์ ๋ก๊ทธ ์ ๋ ฌ
Collections.sort(letterLogs, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
int space1 = o1.indexOf(" ");
int space2 = o2.indexOf(" ");
String id1 = o1.substring(0, space1);
String content1 = o1.substring(space1 + 1);
String id2 = o2.substring(0, space2);
String content2 = o2.substring(space2 + 1);
// compareTo๋ก ๋น๊ต.
// -> int์ ๊ฒฝ์ฐ ํฌ๋ค(1), ๊ฐ๋ค(0), ์๋ค(-1)
// -> ๋ฌธ์์ด์ ๊ฒฝ์ฐ ์์คํค๊ฐ ๊ธฐ์ค์ผ๋ก ๊ณ์ฐ.
int comp = content1.compareTo(content2);
if (comp == 0) {
return id1.compareTo(id2);
}
return comp;
}
});
// ๋ฐฐ์ด์ ์ ์ฅ
String[] ans = new String[logs.length];
int i = 0;
for (String log : letterLogs) {
ans[i++] = log;
}
for (String log : digitLogs) {
ans[i++] = log;
}
return ans;
}
}
Java
๋ณต์ฌ
split์ผ๋ก ํด๋ณผ๊น ํ๋ค๊ฐ ๋ฌธ์์ด ๋ฉ์๋ ์ฐ์ต๊ฒธ ์ด๊ฒ์ ๊ฒ ์จ๋ดค๋๋ฐ ์ฝ๋๊ฐ ์ค์ค ๊ธธ์ด์ง๋ ๋๋.
Comparator๋ก ๋ด๋ถ ๋น๊ต์๋ฅผ ๋ฐ๋ก ํ๋ํ๋ ์ปค์คํ
ํ์ง๋ง ํ์ด ๋ณด๊ณ ๋๋ ๋ณ๋ก ์๋ฏธ์์ด ๋ณด์๋ค.
์ ๋ด๊ฑฐ๋ฉด ๊ทธ๋ฅ ๋ถ๋ฆฌ ๋ก์ง์ ๋ฉ์๋๋ก ํ๋ ๋ ๋ง๋ค์ด์ ํธ์ถํด์ ์ฐ๋๊ฒ ๋ ๊ฐ๊ฒฐํ๊ณ ๊น๋ํ ๊ฒ ๊ฐ๋ค.
๋ค๋ฅธ ํ์ด (from ์๊ตฌ๋ ์ฝ๋)
public class Ch06_03 {
String[] reorderLogFiles(String[] logs) {
List<String> letterLogs = new ArrayList<>();
List<String> digitLogs = new ArrayList<>();
for (String log : logs) {
if (Character.isLetter(log.split(" ")[1].charAt(0))) {
letterLogs.add(log);
} else {
digitLogs.add(log);
}
}
letterLogs.sort((o1, o2) -> {
var s1 = o1.split(" ", 2);
var s2 = o2.split(" ", 2);
return s1[1].equals(s2[1]) ? s1[0].compareTo(s2[0]) :s1[1].compareTo(s2[1]);
});
letterLogs.addAll(digitLogs);
return letterLogs.toArray(new String[0]);
}
}
Java
๋ณต์ฌ
split + ๋๋ค๋ฌธ๋ฒ๊ณผ ์ผํญ์ฐ์ฐ์๋ฅผ ์จ์ ์ฝ๋๊ฐ ๋ ๊น๋ํด์ก๋ค.
๋ฌธ์ ํด๊ฒฐ ์์ด๋์ด
1. ๋ฌธ์ ๋ก๊ทธ ์ซ์ ๋ก๊ทธ ๋ถ๋ฆฌ
2. ์ฌ์ ์, ์๋ณ์์ ๋ฌธ์ ๋ก๊ทธ ์ ๋ ฌ
๋ฌธ์์ด ๋ฉ์๋๋ฅผ ์ ์ ํ ํ์ฉํ๋ฉด ํฌ๊ฒ ์ด๋ ต์ง ์์ ๋ฌธ์ ๊ฐ๋ค.