Algorithm
[JAVA] 전화번호 목록
O'mil
2024. 4. 25. 22:44
728x90
🔗 링크
📌 문제 설명
- 전화번호를 담은 배열 phone_book이 매개변수로 주어질 때,
어떤 번호가 다른 번호의 접두어인 경우가 있으면 false
그렇지 않으면 true를 return
👀 예제
✏️ 풀이 순서
- Sort / Loop 정렬
- Sort 정렬하기
- Loop 돌리기 → 앞번호가 뒷번호의 접두어면 true 리턴
- 마지막까지 아니면 false 리턴
- HashMap
- HashMap 생성하기
- HashMap에 전화번호 해싱하기
- 전체 돌리면서 접두어가 HashMap에 있는지 확인하기
💻 코드
1. Sort / Loop 정렬
import java.util.*;
class Solution {
public boolean solution(String[] phone_book) {
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;
}
}
- startsWith(): 특정문자로 시작하는지 확인하여 true/false 반환 (공백도 취급함)
+) endsWith(): 특정문자로 끝나는지 확인하여 true/false 반환
2. HashMap
import java.util.*;
class Solution {
public boolean solution(String[] phone_book) {
HashMap<String, Integer> map = new HashMap<>();
for (String number: phone_book) {
map.put(number, 1);
}
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;
}
}
- HashMap.containsKey(): HashMap에 인자로 보낸 Key가 있으면 true 반환 / 없으면 false 반환
+) HashMap.containsValue(): HashMap에 인자로 보낸 Value가 있으면 true 반환 / 없으면 false 반환
📚 Reference
[JAVA] 자바_startsWith/endsWith (특정 문자로 시작하거나 끝나는지 체크)
[Java] 맵에 키,값 있는지 확인(containsKey,containsValue)
728x90