코딩테스트
[프로그래머스] 전화번호 목록
gajy
2022. 3. 31. 14:03
728x90
https://programmers.co.kr/learn/courses/30/lessons/42577?language=java#
[ 나의 풀이 ]
sorting 작업을 추가해서 효율성을 높이고자 하였지만 성능 2케이스에 실패했다.
import java.util.List;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
class Solution {
public boolean solution(String[] phone_book) {
List<String> numbers = Arrays.asList(phone_book);
Collections.sort(numbers);
for(int i = 0; i < numbers.size()-1 ; i++) {
for(int j = i+1; j < numbers.size() ; j++) {
if(numbers.get(i).charAt(0) < numbers.get(i).charAt(0)) {
break;
}
if(numbers.get(j).indexOf(numbers.get(i)) == 0) {
return false;
}
}
}
return true;
}
}
[ 다른 사람의 풀이 참고 ]
굳이 이중 for문을 사용하지 않고, 바로 다음 데이터만 확인하면 되는것이 포인트다.
결과는 true, false 인지만 확인하면 되므로.
import java.util.List;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
class Solution {
public boolean solution(String[] phone_book) {
List<String> numbers = Arrays.asList(phone_book);
Collections.sort(numbers);
for(int i = 0; i < numbers.size()-1 ; i++) {
if(numbers.get(i+1).indexOf(numbers.get(i)) == 0) {
return false;
}
}
return true;
}
}
728x90