출처 : https://school.programmers.co.kr/learn/courses/30/lessons/42577
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
import java.util.*;
class Solution {
public boolean solution(String[] phone_book) {
boolean answer = true;
Arrays.sort(phone_book, new Comparator<String>(){
public int compare(String o1,String o2){
return o1.length()-o2.length();
}
});
for(int i=0;i<phone_book.length-1;i++){
String num=phone_book[i];
for(int j=i+1;j<phone_book.length;j++){
if(num.equals(phone_book[j].substring(0,num.length()))){
answer=false;
break;
}
}
}
return answer;
}
}
역시나 phone_book 의 length가 최대 1,000,000이므로 이중 for문에서는 시간 초과가 났습니다.
startsWith함수를 이용하여 더 쉽게 하였습니다.
import java.util.*;
class Solution {
public boolean solution(String[] phone_book) {
Arrays.sort(phone_book);
for (int i = 0; i < phone_book.length - 1; i++){
if (phone_book[i + 1].startsWith(phone_book[i])){
return false;
}
}
return true;
}
}
startsWith 함수를 알고 싶다면
https://signaldogfeet.tistory.com/31
startsWith 와 endsWith - java
특정 문자열이 포함되어 있는 지 확인을 위해 substring으로 문자열을 잘라서 비교하거나 charAt로 특정 인덱스 값을 구한 뒤 비교 혹은 contains, equals를 많이 사용합니다. startsWith() 와 endsWith()함수는
signaldogfeet.tistory.com
를 참고해주세요.
'알고리즘 > Lv2. 프로그래머스' 카테고리의 다른 글
[프로그래머스] 오픈채팅방 - java (0) | 2023.07.25 |
---|---|
[프로그래머스] 주차 요금 계산 - java (0) | 2023.07.25 |
[프로그래머스] 가장 큰 수 - java (0) | 2023.07.23 |
[프로그래머스] 할인 행사 - java (0) | 2023.07.17 |
[프로그래머스] 더 맵게 - java (0) | 2023.07.17 |