전화번호 목록(for JAVA)

Sunyoung·2021년 4월 14일
0
import java.util.*;

class Solution {
    public boolean solution(String[] phone_book) {
        boolean answer = true;
        for(int i =0;i<phone_book.length;i++) {
            String diff = phone_book[i];
            for(int v=0;v<phone_book.length;v++) {
                if(diff.length() < phone_book[v].length() 
                   && phone_book[v].startsWith(diff)) {
                    return false;
                }
            }
        }
        return answer;
    }
}

정확성 테스트는 모두 통과인데, 효율성 3,4번째는 시간초과가 난다 그런데 지금 볼 시간이 없음. 이문제도 기필코 해시로 다시 풀어보리라

2차 답안

import java.util.*;

class Solution {
    public boolean solution(String[] phone_book) {
        boolean answer = true;
        Arrays.sort(phone_book);
        for(int i =0;i<phone_book.length-1;i++) {
            String diff = phone_book[i];
            if(phone_book[i+1].startsWith(diff)) {
                return false;
            }
        }
        return answer;
    }
}

푸는 로직자체는 거이 다른게 없는데 딱하나 있다면 초기에 정렬을 해주느냐에 따라 달라질 수 있다
그럼 무려 for문을 덜 쓸 수 있게 되서 효율성 테스트를 통과할 수 있게 된다

profile
배워서 남주자

0개의 댓글