프로그래머스(해시) 전화번호목록
이번 문제는 하나의 번호를 접두사로 사용하는 번호가 있는지 확인하라는 문제이다.
이전 문제에서 정렬을 해서 풀수 있었다는것을 힌트로, 일단 정렬을 한 후, 그것을 접두어로 사용하는 것이 있는지 확인 하도록 했다. 접두어의 기준은 비교하려고 하는 문자열의 길이보다 접두어가의 길이가 큰경우는 아예 비교하지 않고 접두어를 바꾸고, 아닌경우에는 각 자리를 비교하면서 비교했다.
import java.util.Arrays;
class Solution {
public boolean solution(String[] phone_book) {
boolean answer = true;
if(phone_book.length == 1) {
return true;
}
Arrays.sort(phone_book);
String preString = phone_book[0];
for(int i = 1; i < phone_book.length; i++) {
String compareNumberString = phone_book[i];
if(preString.length() >= compareNumberString.length()) {
preString = phone_book[i];
continue;
}
for(int j = 0; j < preString.length(); j++) {
if(preString.charAt(j) != compareNumberString.charAt(j)) {
preString = phone_book[i];
answer = true;
break;
} else {
answer = false;
}
}
if(!answer) {
break;
}
}
return answer;
}
}
이렇게 했는데,
String method 중에 startsWith라는 것이 있다는것을 암.
그래서 다음과 같이 바꿈
import java.util.Arrays;
class Solution {
public boolean solution(String[] phone_book) {
if(phone_book.length == 1) {
return true;
}
Arrays.sort(phone_book);
String preString = phone_book[0];
for(int i = 1; i < phone_book.length; i++) {
String compareNumberString = phone_book[i];
if(preString.length() >= compareNumberString.length()) {
preString = phone_book[i];
continue;
}
if(compareNumberString.startsWith(preString)) {
return false;
} else {
preString = compareNumberString;
}
}
return true;
}
}
'정리 > 알고리즘' 카테고리의 다른 글
해시 - 베스트앨범 (0) | 2022.02.04 |
---|---|
스택/큐 - 프린터 (0) | 2022.02.03 |
스택/큐 - 기능개발 (0) | 2022.02.03 |
해시 - 위장 (0) | 2022.02.03 |
해시-완주하지못한선수 (0) | 2022.02.03 |
댓글