[Programmers/JAVA]


내 코드

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;
    }
}

나는 그것을 느꼈다

해쉬문제로 작성되었으니 해쉬를 써볼까도 생각했는데 안쓰는게 더 깔끔해보인다.

운영시간은 비슷합니다.

처음 만들었을 때 지침에 세 개를 사용했습니다.

정답은 정답이 나왔지만 문제는 타임아웃이었고, 이를 위해 for 문을 지속적으로 줄여서 접근했습니다.

사실 첫 번째 방법도 해시셋을 사용하지 않고 비교가 가능한데 해시 문제라서 해봤습니다!
나는 다른 사람들이 해결 한 것을보고 두 번째 솔루션을 수정했고 startsWith라는 메소드가 있음을 발견했습니다.

훨씬 깔끔해 보이지 않나요?