[Java 해시] 프로그래머스 - 전화번호 목록

gonudayo·2021년 8월 12일
0
post-thumbnail
post-custom-banner

해시맵을 사용하면 간단하다.

풀이

  1. 모든 전화번호를 해시맵에 넣는다.
  2. 해시맵내에 전화번호의 일부가 있는지 찾는다.

전체코드

import java.util.HashMap;

class Solution {
    public boolean solution(String[] phone_book) {
        HashMap<String, Integer> HM = new HashMap<>();
        for (String number : phone_book) HM.put(number, 1);
        
        for(int i = 0; i < phone_book.length; i++) {
            for(int j = 1; j < phone_book[i].length(); j++) {
                if(HM.containsKey(phone_book[i].substring(0,j))) {
                    return false;
                }
            }
        }

        return true;
    }
}

선언

import java.util.HashMap;

class Main {
    public static void main(String[] args) {
    	HashMap<String, Integer> HM = new HashMap<>();
    }
}

전화번호 넣기

for (String number : phone_book) HM.put(number, 1);

key 값만 확인하면 되기 때문에, value에는 1로 채워 둔다.

접두사 찾기

for(int i = 0; i < phone_book.length; i++) {
	for(int j = 1; j < phone_book[i].length(); j++) {
    	if(HM.containsKey(phone_book[i].substring(0,j))) {
        	return false;
		}
	}
}

return true;

phone_book[i] 를 j만큼 잘라 해시맵에 동일한 값이 있으면 false 리턴
없으면 i++ 해서 다음 전화번호로 탐색
모두 없으면 true 리턴

profile
초신성 백엔드 개발자
post-custom-banner

0개의 댓글