Sangil's blog

https://github.com/ChoiSangIl Admin

프로그래머스 알고리즘 전화번호 목록 자바(JAVA) DEV / ALGORITHM

2020-07-18 posted by sang12


프로그래머스 해시 코딩테스트 연습 전화번호 목록의 해답입니다.

스트링 배열에 전달받은 전화번호에서 겹치는 접두어가 있으면 falser를 없으면 ture를 리턴하는 문제입니다. 전에 해시 연습문제(존재하지 않는 선수)에서 정렬을 하고 해결했던 방법이 생각나서, 먼저 정렬을 하고 처리했습니다. 그런데, 기본 sort로 정렬하면 문자로 정렬이 되서, 글자의 길이로 정렬하기 위해 Comparator.comparingInt를 활용하여 크기로 정렬해서 처리 했습니다.

문제를 풀고 다른분의 문제를 참고하는데 StartWith로 해결한분도 있더라구요. 역시 푸는 방법도 다양하고, 잘하는 사람도 많은거 같습니다 ^^

import java.util.Arrays;
import java.util.Comparator;

class Solution {
    public boolean solution(String[] phone_book) {
        Arrays.sort(phone_book, Comparator.comparingInt(String::length));		
	for(int i=0; i<phone_book.length; i++) {
		for(int j=i+1;j<phone_book.length;j++) {
			if(phone_book[i].contentEquals(phone_book[j].substring(0, phone_book[i].length()))) {
				return false;
			}
		}
	}
        return true;
    }
}
REPLY