문제풀이
1. for - loop 직접비교
코드
import java.util.*;
class Solution {
public boolean solution(String[] phone_book) {
/*방법1: 2중 for-loop --> 효율성 시간초과*/
// for (int i=0; i<phone_book.length; i++) {
// for (int j=0; j<phone_book.length; j++) {
// if (i==j) continue;
// if (phone_book[i].startsWith(phone_book[j])) {
// return false;
// }
// }
// }
// return true;
}
}
결과
2. 정렬 후 for - loop 비교
코드
import java.util.*;
class Solution {
public boolean solution(String[] phone_book) {
/*방법2: 정렬 후 for-loop*/
// Arrays.sort(phone_book);
// for (int i=0; i<phone_book.length-1; i++) {
// if (phone_book[i+1].startsWith(phone_book[i])) {
// return false;
// }
// }
// return true;
}
}
결과
3. HashMap사용
사용된 메소드
1) HashMap 클래스
containsKey (Object key)
리턴: key존재시 -> True
key존재X -> False
2) String 클래스
subString (int 시작Idx, int 끝Idx)
(시작 이상, 끝 미만)
코드
import java.util.*;
class Solution {
public boolean solution(String[] phone_book) {
/*방법3: HashMap 사용 */
Map<String, Integer> map = new HashMap<>();
for (int i=0; i<phone_book.length; i++) {
map.put(phone_book[i], i);
}
for (int i=0; i<phone_book.length; i++) {
for (int j=0; j<phone_book[i].length(); j++) {
if (map.containsKey(phone_book[i].substring(0, j))) {
return false;
}
}
}
return true;
}
}
결과
'알고리즘 > 자료구조' 카테고리의 다른 글
프로그래머스[자바] - 완주하지 못한 선수 (0) | 2022.06.25 |
---|---|
프로그래머스[자바] - 기능개발 (0) | 2022.06.24 |