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);
}