https://programmers.co.kr/learn/courses/30/lessons/42577?language=java
코딩테스트 연습 - 전화번호 목록
전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조
programmers.co.kr
1. 배열의 startsWith()를 사용하는 방법
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;
}
}
1. 오름차순으로 정렬한다.
2. for문을 써서 바로 다음 배열이 현재 배열로 시작하는지 확인(startsWith)
3. 배열로 시작하면 false, 아니면 true 반환한다.
2. HashMap의 containsKey()을 사용하는 방법
import java.util.*;
class Solution {
public boolean solution(String[] phone_book) {
HashMap<String, Integer> hm = new HashMap<>();
// 모든 전화번호를 hashmap에 넣는다.
for(String s: phone_book) hm.put(s, 1);
// i의 길이만큼 자르고 해시맵에 존재하는지 확인
for(int i=0;i<phone_book.length;i++){
for(int j=0;j<phone_book[i].length();j++){
if(hm.containsKey(phone_book[i].substring(0,j))) return false;
}
}
return true;
}
}
1. 모든 전화번호를 HashMap에 넣는다.
2. substring()으로 현재 전화번호의 길이만큼 자르고 자른 번호가 해시맵에 존재하는지 확인한다.
3. 존재하면 false, 존재하지않으면 true 반환
'코딩테스트' 카테고리의 다른 글
[BOJ_10844/JAVA] 쉬운 계단 수 (0) | 2022.01.11 |
---|---|
[BOJ_15990/JAVA] 1,2,3 더하기 5 (0) | 2022.01.10 |
[BOJ_1463/JAVA] 1로 만들기 (0) | 2022.01.06 |
[Programmers/JAVA] 소수 찾기 (0) | 2022.01.05 |
[BOJ_6588/JAVA] 골드바흐의 추측 (0) | 2021.12.30 |