[문제]
[제한 조건]
- phone_book의 길이는 1 이상 1,000,000 이하입니다.
- 각 전화번호의 길이는 1 이상 20 이하입니다.
- 같은 전화번호가 중복해서 들어있지 않습니다.
[입출력 예]
phone_book | return |
["119", "97674223", "1195524421"] | false |
["123","456","789"] | true |
["12","123","1235","567","88"] | false |
[알고리즘]
전화번호가 담긴 phone_book 배열에서 한 element가 다른 element로 "시작되는지" 찾는 문제이다.
간단하게 배열을 Arrays.sort() 를 이용하여 정렬한뒤 반복문으로 앞에서부터 다음 인덱스 값이 현재 인덱스 값으로 시작하는지 찾아서 false를 리턴해주면 되는 문제이다
다음 인덱스 값이 현재 인덱스 값으로 시작하는지 판별하는것에는 startsWith() 를 사용하였다
startsWith()
boolean startsWith(String prefix)
String 변수의 문자열이 인자로 전달된 문자로 시작되면 boolean 값true가 반환되고 인자로 전달된 문자열로 시작하지 않으면 false로 반환한다
String이 특정 문자열로 시작되는지 알 수 있다.
[코드]
import java.util.Arrays;
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++)
if(phone_book[i+1].startsWith(phone_book[i])){
answer =false;
}
return answer;
}
}
'Coding Test > Programmers' 카테고리의 다른 글
[JAVA] 정렬 Lv.2 / 가장 큰 수 (0) | 2021.05.25 |
---|---|
[JAVA] 스택/큐 Lv.2 / 기능개발 (0) | 2021.05.13 |
[JAVA] 완전탐색 Lv.1 / 모의고사 (0) | 2021.05.02 |
[JAVA] Heap Lv.1 / 더 맵게 (0) | 2021.04.26 |
[JAVA] 정렬 Lv.1 / K번째 수 (0) | 2021.04.26 |