CodeWars 일흔 두 번째 문제
Updated:
Meeting
public static String meeting(String s) {
String[] guestSplit = s.toUpperCase().split(";");
HashMap<String,String> lastNameMap = new HashMap<String, String>();
for(String guest : guestSplit) {
String[] name = guest.split(":");
lastNameMap.put(name[1], lastNameMap.getOrDefault(name[1], "") + name[0] + ":");
}
TreeMap<String,String> tm = new TreeMap<String,String>(lastNameMap);
Iterator<String> iteratorKey = tm.keySet().iterator(); //키값 오름차순 정렬(기본)
String result = "";
while(iteratorKey.hasNext()) {
String lastName = iteratorKey.next();
String[] firstNameArray = lastNameMap.get(lastName).split(":");
Arrays.sort(firstNameArray);
for(String firstName : firstNameArray) {
result +="("+lastName+", "+ firstName + ")";
}
}
return result;
}
- 처음에는 아래Best 코드 처럼 생각은 했다.
- 그런데 Arrays.sort가 특수문자까지 고려해서 정렬해주는지 몰랐다.
- 그래서 TreeMap(key, value 값을 사용하여 정렬)이용하여 풀어냈다.
- 이번에 알았으니 다음에 잘 써먹어야 겠다.
public static String meeting(String s) {
String[] guests = s.split(";");
for (int i = 0; i < guests.length; i++){
int index = guests[i].indexOf(":");
guests[i] = "(" + guests[i].substring(index+1).toUpperCase() + ", " + guests[i].substring(0,index).toUpperCase() + ")";
}
Arrays.sort(guests);
return String.join("",guests);
}