전화번호 목록이 주어지고, 한 전화번호가 다른 전화번호를 포함하는 경우가 있는지 확인한다.
예를 들어 전화번호 '111'과 '1112'가 있을 때, '1112'는 '111'를 포함한다.
Map을 생성하고 모든 전화번호를 넣는다.
반복문을 통해 전화번호부 배열의 요소 하나하나에 접근해서 각 번호의 길이만큼의 중첩 반복문을 만들고, 번호의 일부를 포함하는 번호가 Map에 존재하는지의 여부를 확인한다.
예를 들어 전화번호 '111'과 '1112'가 있을 때, '1112'를 나눈 '1', '11', '111'가 전화번호부에 존재하는지 확인한다.
문제 풀이
import java.util.*;
class Solution {
public boolean solution(String[] phone_book) {
// 번호를 담는 Map을 생성한다
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++) {
// 각 번호의 여러 일부에 해당하는 key가 있는지 찾는다
for (int j = 0; j < phone_book[i].length(); j++) {
if (map.containsKey(phone_book[i].substring(0, j)))
return false;
}
}
return true;
}
}
댓글