[Programmers / Level2] 42577. 전화번호 목록(Java)

이하얀·2024년 7월 4일
0

💡 Info




입출력 조건




입출력 예시




문제 이해


  • 한 번호가 다른 번호의 접두어 즉, 앞 전화번호가 뒷 전화번호에 완전히 겹쳐지는 경우를 구하는 문제


알고리즘


풀이 시간 : 10분
1. 주어진 배열 phone_book의 원소를 각각 비교하여 완전히 겹치는 경우가 있다면 -> true

  • 즉, phone_book[i] == phone_book[i+1] -> true를 반환
import java.util.*;

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


오답체크


  • 테스트 케이스를 1개만 통과하는 문제
    • phone_book을 우선 정렬부터 하기
    • for문 -> phone_book.length-1로 변경
    • 두 원소 비교 시 startsWith를 사용하도록 변경하기
//before
for(int i=0; i<21; i++){
	if(phone_book[i] == phone_book[i+1]) return false;
    else return true;
}
//after
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;
    }
}


최종 풀이


풀이 시간 : 25분(첫 풀이 시간 포함)

  1. phone_book 배열 정렬하기
  2. 주어진 배열 phone_book의 원소를 각각 비교하여 완전히 겹치는 경우가 있다면 -> true
  • 두 원소 비교 시 startsWith를 사용
import java.util.*;


class Solution {
    public boolean solution(String[] phone_book) {
        boolean answer = true;
        
        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 answer;
    }
}


결과



profile
언젠가 내 코드로 세상에 기여할 수 있도록, BE&Data Science 개발 기록 노트☘️

0개의 댓글