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;
}
}
'알고리즘 공부 > 프로그래머스' 카테고리의 다른 글
(Java)프로그래머스 코딩테스트 연습 - 해시 - 위장 (0) | 2020.10.28 |
---|---|
(Java)프로그래머스 코딩테스트 연습 - 탐욕법(Greedy) - 구명보트 (0) | 2020.10.24 |
(Java)프로그래머스 코딩테스트 연습 - 완전탐색 - 소수 찾기 (0) | 2020.10.20 |
(Java)프로그래머스 코딩테스트 연습 - 힙(Heap) - 더 맵게 (0) | 2020.10.19 |
(Java)프로그래머스 코딩테스트 연습 - 월간 코드 챌린지 시즌1 - 삼각 달팽이 (0) | 2020.10.19 |