코딩테스트 연습 - 전화번호 목록 이 문제는 길이에 따라 정렬한 뒤, 그 길이보다 짧은 번호들을 모두 확인해보는 것이 핵심이다. 나는 Set[]을 사용했는데, Set의 contains를 사용할 경우 O(1)의 시간으로 찾을 수 있기 때문이다. 따라서, 길이를 len이라고 뒀을 때, O(len)의 시간으로 해당 전화번호의 접두사가 있는지 확인할 수 있다. 정렬을 하는 이유는 길이가 긴 번호가 앞에 올 수 있는데, 이 때는 나중에 짧은 번호가 들어왔을 때 다른 번호의 접두사인지 확인할 수 없기 때문이다. 따라서, 반드시 정렬을 먼저해 접두사로 사용될 번호들을 저장해두고 확인해야 한다. 해당 전화번호에 접두사가 있는지 확인하는 로직은 아래와 같다. for(String number : phone_book){ i..
자바
int[] arr = {5,1,3,4,2};// 오름차순 정렬Arrays.sort(arr);위와 같이 정수형 배열을 오름차순으로 정렬하려면 Arrays.sort메소드를 사용하면 된다. 특정 구간을 정렬하려고 하면 Arrays.sort(arr, 시작, 끝)을 통해 구간을 오름차순으로 정렬할 수 있다. 내림차순으로 정렬하고 싶다면 어떻게 해야할까?매개변수가 없는 sort 자체는 오름차순 정렬밖에 지원하지 않는다. 그럼 매개변수에 비교기준을 반대로 넣으면 되지 않을까?Arrays.sort((num1,num2)-> num2 - num1);와 같이 말이다. 하지만, 이는 불가능한데 sort메서드가 Comparator 함수형 인터페이스를 매개변수로 사용하고 있기 때문이다. Comparator 인터페이스는 객체간의 ..