프로그래머스 문제 풀이 - 전화번호 목록 (Java)
전화번호 목록에서 어떤 번호가 다른 번호의 접두어인 경우가 있으면 `false`를, 그렇지 않으면 `true`를 반환하는 문제입니다. 완전탐색으로 모든 쌍을 비교하면 시간복잡도가 `O(n²)`이므로, 원소 개수가 최대 `100만 개`인 이 문제의 조건에서는 시간 초과가 발생합니다. 이를 해결하기 위해 사전순 정렬을 활용합니다.
전화번호 목록에서 어떤 번호가 다른 번호의 접두어인 경우가 있으면 `false`를, 그렇지 않으면 `true`를 반환하는 문제입니다. 완전탐색으로 모든 쌍을 비교하면 시간복잡도가 `O(n²)`이므로, 원소 개수가 최대 `100만 개`인 이 문제의 조건에서는 시간 초과가 발생합니다. 이를 해결하기 위해 사전순 정렬을 활용합니다.
전화번호 목록에서 어떤 번호가 다른 번호의 접두어인 경우가 있으면 `false`를, 그렇지 않으면 `true`를 반환하는 문제입니다. 완전탐색으로 모든 쌍을 비교하면 시간복잡도가 `O(n²)`이므로, 원소 개수가 최대 `100만 개`인 이 문제의 조건에서는 시간 초과가 발생합니다. 이를 해결하기 위해 사전순 정렬을 활용합니다.
종류가 중복되는 `N`마리의 폰켓몬 중에서 `N/2`마리를 골라, 가장 많은 종류 수를 반환하는 문제입니다. 종류 수의 최댓값을 구해야 하므로 먼저 중복을 제거할 필요가 있습니다. 단일값 저장만 필요하고, 순서 유지가 필요 없으므로 `HashSet`을 사용합니다.
참가자 명단과 완주자 명단을 비교하여, 딱 한 명 **완주하지 못한 사람**을 찾는 문제입니다. 두 명단 다 배열로 주어지는데, 완주자 명단을 순회하며 해당 완주자와 동일한 이름의 사람을 참가자 명단에서 지운다면 참가자 명단에 **마지막으로 남는 한 사람**이 완주하지 못한 사람이 됩니다.