[Programmers/JAVA] 전화번호 목록
2023. 2. 23. 20:15ㆍ자바/프로그래머스
내 코드
import java.util.*;
class Solution {
public boolean solution(String[] phone_book) {
boolean answer=true;
//순서대로 정렬시, 다음 문자열이 제일 겹치는거임!
Arrays.sort(phone_book);
//hash문제라서 사용해봄.
HashSet<String> set=new HashSet<>();
for(int i=0; i<phone_book.length-1; i++) {
set.add(phone_book[i]);
if(phone_book[i].length()<phone_book[i+1].length()) {
//다음 문자열을 현재 문자열의 길이만큼 자름.
if(set.contains(phone_book[i+1].substring(0, phone_book[i].length()))) {
return false;
}
};
}
return answer;
}
}
import java.util.*;
class Solution {
public boolean solution(String[] phone_book) {
boolean answer=true;
Arrays.sort(phone_book);
//startsWith메소드 사용
for(int i=0; i<phone_book.length-1; i++) {
if(phone_book[i+1].startsWith(phone_book[i])) {
return false;
}
}
return answer;
}
}
느낀점
hash문제라고 써있어서 hash를 사용해서 생각해봤는데 안사용하는게 더 깔끔한것같다. 작동 시간은 비슷비슷하다. 처음만들었을 때는 for문을 세번을 사용했다. 정답은 제대로 나왔지만 문제는 시간초과였고 for문을 계속해서 줄이는 방식으로 접근했다. 사실 첫번째방법도 hashset안쓰고 비교하면 되기하는데 hash문제라서 사용해봤다! 두번째 풀이는 다른 사람이 푼 것을 보고 startsWith이란 메소드가 있다는 걸 알게되어 바꿔봤다. 훨씬 깔끔해보지않는가?
'자바 > 프로그래머스' 카테고리의 다른 글
[Programmers/JAVA] 주식가격 (0) | 2023.02.28 |
---|---|
[Programmers/JAVA] k진수에서 소수 개수 구하기 (0) | 2023.02.24 |
[Programmers/JAVA] 연속 부분 수열 합의 개수 (0) | 2023.02.22 |
[Programmers/JAVA] [1차] 뉴스 클러스터링 (0) | 2023.02.21 |
[Programmers/JAVA] 프린터 (0) | 2023.02.20 |