프로그래머스 | 전화번호 목록 (Java)

mul·2023년 2월 28일
0

코딩테스트연습

목록 보기
31/56

🔒 문제

프로그래머스 Lv.2 해시 전화번호 목록

🔑 해결

전화번호부에 적힌 전화번호를 담은 배열 phone_book이 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 return하는 solution함수를 작성하는 문제이다.

HashMap에 phone_book의 값을 key,value로 put한 다음, 특정 번호의 길이만큼 다른 번호를 잘라서 그 값이 HashMap에 존재하는지(containsKey)를 찾는 문제였다.

  1. HashMap map 생성
  2. for문을 통해 map의 key와 value에 phone_book 값 저장
  3. 2중 for문을 사용해 phone_book[i]에 대하여 phone_book[i]를 제외한 다른 값을 0부터 phone_book[i].length()까지 자른 문자열이 map의 Key값으로 존재하는지를 확인
  4. 존재한다면 false를 return

🔓 코드

import java.util.HashMap;
import java.util.Map;
class Solution {
    public boolean solution(String[] phone_book) {
        boolean answer = true;

        Map<String, String> map = new HashMap<>();
        
        for (int i = 0; i < phone_book.length; i++) {
			map.put(phone_book[i], phone_book[i]);
		}
        
        for (int i = 0; i < phone_book.length; i++) {
			for (int j = 1; j < phone_book[i].length(); j++) {
				if (map.containsKey(phone_book[i].substring(0, j)))
					return false;
			}
		}
        
        return answer;
    }
}

0개의 댓글