알고리즘/자료구조
프로그래머스[자바] - 전화번호 목록
제이G
2022. 6. 25. 17:09
문제풀이
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;
}
}
결과