알고리즘 공부/프로그래머스
(Java)프로그래머스 코딩테스트 연습 - 해시 - 전화번호 목록
HRuler
2020. 10. 21. 10:27
1. 문제
https://programmers.co.kr/learn/courses/30/lessons/42577#qna
코딩테스트 연습 - 전화번호 목록
전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조��
programmers.co.kr
2. 나의 풀이
import java.util.HashMap;
class Solution {
public boolean solution(String[] phone_book) {
/*
//phone_book 배열 중 가장 짧은 문자열 길이를 저장할 변수
int phonenum_length = 21;
//phone_book 배열 중 가장 짧은 문자열 길이를 찾아 phonenum_length 변수에 저장
for(int i = 0; i < phone_book.length; i = i + 1) {
if(phonenum_length > phone_book[i].length()) {
phonenum_length = phone_book[i].length();
}
}
//System.out.println(phonenum_length);
//phone_book 배열의 모든 문자열을 phonenum_length 길이로 변환
for(int i = 0; i < phone_book.length; i = i + 1) {
phone_book[i] = phone_book[i].substring(0, phonenum_length);
}
//System.out.println(Arrays.toString(phone_book));
*
*/
//변환된 배열 중 같은 문자열이 있는지 확인하고 있는 경우 false를 return
for(int i = 0; i < phone_book.length; i = i + 1) {
int phonenum_length = phone_book[i].length();
for(int j = 0; j < phone_book.length; j = j + 1) {
if(i == j) {
continue;
}
try {
if(phone_book[i].equals(phone_book[j].substring(0, phonenum_length))) {
return false;
}
}catch(Exception e) {
continue;
}
}
}
return true;
}
}
3. 다른 사람 풀이
class Solution {
public boolean solution(String[] phoneBook) {
for(int i=0; i<phoneBook.length-1; i++) {
for(int j=i+1; j<phoneBook.length; j++) {
if(phoneBook[i].startsWith(phoneBook[j])) {return false;}
if(phoneBook[j].startsWith(phoneBook[i])) {return false;}
}
}
return true;
}
}