728x90
코딩테스트 연습 - 전화번호 목록 | 프로그래머스 (programmers.co.kr)
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;
}
}
해시문제지만, Arrays.sort를 이용해 정렬 후 풀이하는 방법이다.
* boolean startsWith( String A )
- 비교 대상 문자열 ( A ) 값으로 시작되는지 여부를 확인하고 booelan값으로 리턴한다.
위의 방법은 루프를 이용해서 현재 인덱스의 값과 i+1 된 인덱스 의 값을 비교한다,
Ex)
String startsWithT = "자바 코딩 테스트 ";
System.out.println( startsWithT.startsWith("자바") ); // true
System.out.println( startsWithT.startsWith("자바 ") );// true
System.out.println( startsWithT.startsWith("자") );// true
System.out.println( startsWithT.startsWith(" 자") );// false
import java.util.*;
class Solution {
public boolean solution(String[] phone_book) {
HashMap<String, Integer> map = new HashMap<>();
for(int i = 0 ; i < phone_book.length; i++){
map.put(phone_book[i], i);
}
for(int i = 0 ; i < phone_book.length; i++){
for (int j = 0 ; j < phone_book[i].length();j++){
if(map.containsKey(phone_book[i].substring(0,j)))
return false;
}
}
return true;
}
}
해당 방법은 해시를 이용해서 풀이하는 방법이다.
map에 key에 배열의 값을 넣는다.
substring( a , b) 를 통해 해당하는 배열의 모든 수를 루프해서 map에 해당하는 key값이 있는지 찾는다.
map.containsKey는 맵에서 인자로 보낸 키가 있으면 true , 없으면 false를 반환한다.
만약 위에서 map의 value값에 값을 넣었다면
map.containsValue를 사용할 수 도 있겠다.
728x90
'알고리즘' 카테고리의 다른 글
[프로그래머스] 완주하지 못한 선수 (0) | 2021.12.23 |
---|