본문
전화번호 목록 #해시 #level2
프로그래밍/코딩테스트(java) 2021. 1. 7. 19:48
반응형
💡 실행 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;
}
}
반응형
댓글