[프로그래머스] 42577번 : 전화번호 목록

이도은·2022년 1월 16일
0


코드

import java.util.HashMap;
import java.util.Map;

public class PRO_42577 {

    //해시 사용 O.
    public static boolean solution(String[] phone_book) {

        Map<String, Integer> map = new HashMap<String, Integer>();

        // phone_book 배열 안의 값들을 map에 넣기
        for (int i = 0; i < phone_book.length; i++) {
            map.put(phone_book[i], i);
        }

        // containsKey : 맵에서 인자로 보낸 키가 있는지 확인
        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;
    }

    public static void main(String[] args) {
        String[] phone_book = {"119", "97674223", "1195524421"};

        System.out.println(solution(phone_book));
    }
}

풀이 및 느낀점

해시를 사용하여 문제에 접근했다. 먼저 해시맵을 생성하여 phone_book 배열에 저장되어 있는 전화번호 값들을 저장하였다. 그 후, phone_book 배열 길이만큼 반복하고 동시에 phone_book 배열 내의 값의 길이만큼 이중반복하면서, subString 메서드를 사용하여 문자열이 해시맵에 포함되어 있는지의 유무를 확인했다. 만약 문자열의 값이 해시맵에 존재한다면, false를 리턴해주었다.

containsKey() : 맵에서 인자로 보낸 키가 있는지 확인


참고자료

0개의 댓글