알고리즘/자료구조

프로그래머스[자바] - 전화번호 목록

제이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;
    }
}

 

결과