본문

전화번호 목록 #해시 #level2

반응형

 

💡 실행 1

package com.java.coding.test;

public class Run {
	public static void main(String[] args) {
		String[] inputs = { "119", "97674223", "1195524421" };

		// result: false
		System.out.println(new PhoneBook_1().solution(inputs));
	}

}

 

💡 풀이 1 - startsWith

startsWith를 이용하여 접두사 존재 유무 확인

public class PhoneBook_1 {
	public boolean solution(String[] phoneBook) {
		for (int i = 0; i < phoneBook.length; i++) {
			for (int j = i + 1; j < phoneBook.length; j++) {
				if (phoneBook[i].startsWith(phoneBook[j])) {
					return false;
				}

				if (phoneBook[j].startsWith(phoneBook[i])) {
					return false;
				}
			}
		}
		return true;
	}
}

 


 

💡 실행 2

package com.java.coding.test;

public class Run {
	public static void main(String[] args) {
		String[] inputs = { "119", "97674223", "1195524421" };

		// result: false
		System.out.println(new PhoneBook_2().solution(inputs));
	}

}

 

💡 풀이 2 - startsWith, sort 메서드

 

 

sort메서드 → 오름차 순으로 정렬

작은 수가 앞으로, 큰 수가 뒤로 정렬이 되기 때문에, 앞의 숫자가 접두사인지 확인할 필요가 없어진다. 

import java.util.Arrays;

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



 

반응형

공유

댓글