코드굽는 타자기
Programmers[42577] - 전화번호 목록도움말[Level2] 본문
링크
문제설명
- 접두사 포함관계 여부 파악
문제풀이
- 비교대상 min길이 이용해서 비교
문제코드
import java.util.HashSet;
public class Solution{
public static boolean solution(String[] phone_book) {
HashSet<String> hs = new HashSet<String>();
for (String phone: phone_book) {
boolean contains=false;
for (String pnum: hs) {
int min = Math.min(pnum.length(), phone.length());
String pnum_s = pnum.substring(0, min);
String phone_s = phone.substring(0, min);
if(pnum_s.equals(phone_s)) {
contains = true;
break;
}
}
if(!contains) {
hs.add(phone);
}
else {
return false;
}
}
return true;
}
public static void main(String[] args) {
System.out.println(solution(new String[] {"119", "97674223", "1195524421"}));
System.out.println(solution(new String[] {"123", "45674223", "7895524421"}));
System.out.println(solution(new String[] {"12", "12374223", "1235524421"}));
}
}
아쉬운점
- phone 객체 만들어서 equals 오버라이딩해서 contains 검사 해보려 했는데 구현이 안된다...
- 굳이 HashSet 써야하나 싶긴함
- 다른 사람들 풀이 보면 HashSet안쓰고 효율적으로 풀었음
다른사람들 풀이
- 정렬 후 O(N)으로 비교
- String.startsWith(str) 메소드로 접두사 비교함
'알고리즘 > 해시' 카테고리의 다른 글
Programmers[42579] - 베스트앨범[Level2] (0) | 2020.04.30 |
---|---|
Programmers[42578] - 위장[Level2] (0) | 2020.04.30 |
Programmers[42576] - 완주하지 못한 선수[Level1] (0) | 2020.04.30 |
Programmers[64063] - 호텔 방 배정[Level4] (0) | 2020.04.05 |
Comments