Scroll indicator done
728x90

문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/42577

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


조건

  • phone_book의 길이는 1 이상 1,000,000 이하입니다.
    • 각 전화번호의 길이는 1 이상 20 이하입니다.
    • 같은 전화번호가 중복해서 들어있지 않습니다.

 

전체 코드

package com.example.javaproject3.psstudy;

import java.util.HashSet;

public class Solution42577 {
    public boolean solution(String[] phone_book) {
        HashSet<String> set = new HashSet<>();
        for(String phone : phone_book) set.add(phone); // phone 을 HashSet 에 저장

        for(String phone : phone_book){
            for(int i=1; i<phone.length(); i++){  // phone 길이마다
                if(set.contains(phone.substring(0, i)))  // set에 phone 으로 시작하는 값이 있는지 확인
                    return false;  // 있으면, false 리턴
            }
        }
        return true;
    }
}

 

코드 리팩토링

정렬 후, startsWith 로 비교

for(int i = 0; i < phone_book.length-1; i++){
    if(phone_book[i+1].startsWith(phone_book[i]))
        return false;
}

 

728x90