코딩테스트/Java

[JAVA] 해시 "전화번호 목록"

SK_MOUSE 2020. 8. 31. 16:46
반응형

전화번호 문자열들 간의 접두번호가 있는지 확인하는 알고리즘 문제다.

 

아래의 코드는 필자가 제일 깔끔하다고 생각하는 코드이다.

 

class Solution {
    public boolean solution(String[] phone_book) {
        boolean answer = true;
        for(int i=0;i<phone_book.length;i++) {
            for(int j=i+1;j<phone_book.length;j++) {
                if(phone_book[i].startsWith(phone_book[j]))return false;
                if(phone_book[j].startsWith(phone_book[i]))return false;
            }
        }
        return answer;
    }
}

 

위의 코드의 핵심은

String문자열1.startsWith(String문자열2)

 

뜻 그대로 String문자열2의 값이 String문자열1에 들어가는지를 확인하는 메소드이다.

 

그리고 양쪽으로 i와 j배열이 startsWith 하는지 확인해야 하므로,

if문으로 두 방향을 모두 성립하는지 확인해야 한다.

 

 

추가적으로 위와 비슷한 메소드가 있다.

String문자열1.contains(String문자열2)

 

위와 같이 contains 메소드를 사용하는 경우 해당 문자열이 "포함"되는지 검사한다.

 

따라서 이번 문제에서는 "시작"하는 문자열을 찾아야하므로 startsWith메소드를 사용하는것이 맞다.

반응형

'코딩테스트 > Java' 카테고리의 다른 글

[JAVA] 스택/큐 "기능개발"  (1) 2020.09.05
[JAVA] 스택/큐 "주식가격"  (0) 2020.09.05
[JAVA] 해시 "위장"  (0) 2020.08.31
[JAVA] 해시 "베스트앨범"  (0) 2020.08.31
[JAVA] 해시 "완주하지 못한 선수"  (0) 2020.08.24