개발 공부 기록
728x90

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

 

코딩테스트 연습 - 전화번호 목록

전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조

programmers.co.kr

해시 문제 목록 중에 있던 문제.

해시로 풀어야한다고 해서 어렵게 생각하고 있었는데, 그냥 해시맵에 모든 번호를 넣고 한 번호를 0번인덱스 부터 끝  - 1 번째까지 잘라보면서 해당하는 문자열이 맵의 키로 있는지 확인하면 되는 문제다.

 

참고로 substring 함수는 시작 인덱스부터 끝 인덱스 - 1 까지 세주기 때문에 j는 1부터 시작했다. substring(0,0)은 늘 ""(빈 문자열) 이기 때문에. 

import java.util.HashMap;

public class 전화번호_목록 {
    public boolean solution(String[] phone_book) {
        boolean answer = true;

        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 = 1; j < phone_book[i].length(); j ++) {
                if(map.containsKey(phone_book[i].substring(0, j))) answer = false;
            }
        }

        return answer;
    }
}
728x90
profile

개발 공부 기록

@찐만두

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!