프로그래머스 - 전화번호 목록

J-Keonho·2020년 9월 7일
0

해당 알고리즘 자료는 제가 직접 푼 것도 있지만 다른 분들의 풀이과의 비교를 통해 더 나은 알고리즘을 공부하기 위해 정리한 것들입니다.

프로그래머스 - 전화번호 목록

https://programmers.co.kr/learn/courses/30/lessons/42577

풀이 1. (초급) - 이중 for문을 이용하여 조건 탐색
// 속도는 빠르나 이중 for문으로 인한 복잡도가 심한 것 같다.

import java.util.Arrays;

class Solution {
    public boolean solution(String[] phone_book) {
        boolean answer = true;
		
		for (int i = 0; i < phone_book.length-1; i++) {
			for (int j = i+1; j < phone_book.length; j++) {
				if(phone_book[j].startsWith(phone_book[i]) || phone_book[i].startsWith(phone_book[j])) {
					answer = false;
					break;
				}
			}
			if(!answer) break;
		}

        return answer;
    }
}

풀이 2. (중급) - 정렬을 통해 앞 뒤의 문자를 비교
// 풀이 1보단 속도는 느리나 정렬를 통해 앞 뒤 문자만 비교함으로써 체크가 가능하다.

import java.util.Arrays;

class Solution {
    public boolean solution(String[] phone_book) {
        boolean answer = true;
        String[] tmap = phone_book; 
        Arrays.sort(tmap);

        for(int i=0 ; i < tmap.length -1  ; i++) {
            if( tmap[i+1].startsWith(tmap[i]) ) {
                return false;
            }
        }

        return answer;
    }
}
profile
안녕하세요.

0개의 댓글