알고리즘 풀이/프로그래머스
1 ★★★ [프로그래머스][JAVA] 전화번호 목록 (문자열)
배게
2022. 3. 24. 07:15
728x90
220607
효율성 3,4 실패
(수정전)으로 돌릴 시 시간복잡도 n^2
(수정후)으로 돌릴 시 시간복잡도 nlogn
효율성 3,4번 실패함
O(n^2)으로 풀어서 그런듯
O(n)으로 해결이 되는데 정렬 후에(사전 순으로)
앞뒤 문자만 체크해줘도 해결이 되는 방식이 뭔가 신기했다..
(수정 전)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
import java.util.*;
class Solution {
public boolean solution(String[] phone_book) {
boolean answer = true;
for(int i=0; i<phone_book.length; i++){
for(int j=i+1; j<phone_book.length; j++){
if(phone_book[j].startsWith(phone_book[i])) return false;
if(phone_book[i].startsWith(phone_book[j])) return false;
}
System.out.println(phone_book[i]);
}
return answer;
}
}
|
cs |
(수정 후)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
import java.util.*;
class Solution {
public boolean solution(String[] phone_book) {
Arrays.sort(phone_book);
// for(int i=0; i<phone_book.length; i++){
// System.out.println(phone_book[i]);
// }
for(int i=0; i<phone_book.length-1; i++){
if(phone_book[i+1].startsWith(phone_book[i])) return false;
}
return true;
}
}
|
cs |