프로그래밍/알고리즘
프로그래머스/해시/전화번호 목록
Doublsb
2021. 8. 6. 04:24
https://programmers.co.kr/learn/courses/30/lessons/42577
풀이
- 119, 11 9552 4421이 있으면, 후자 접두에 119가 들어있으므로 false
- 접두어가 하나라도 존재한다면 false를 리턴하면 됨
- 119라면, 1, 11를 해시에 등록해두면 되는 거 아니냐
- C#을 지원하지 않아서 Java로만 풀었음
Java
import java.util.HashSet;
class Solution {
public boolean solution(String[] phone_book) {
HashSet<String> hash = new HashSet<String>();
for(String e : phone_book)
{
for(int i=1; i<e.length(); i++)
{
hash.add(e.substring(0, i));
}
}
for(String e : phone_book){
if(hash.contains(e)) return false;
}
return true;
}
}
결과
정확성 83.3 / 효율성 16.7 / 통과
피드백
처음에는 HashSet의 존재가 있는 줄 모르고, HashMap의 Value에 Int를 우겨넣어서 풀었다.
아무튼 키만 필요한 문제이므로, HashSet으로 다시 풀었더니, 소소한 효율성 테스트의 성능 향상을 보았음.
반응형