코드 저장소.

프로그래머스-전화번호부 본문

코테/JAVA

프로그래머스-전화번호부

slown 2026. 7. 21. 02:12

목차

1.문제

2.문제해결과정

 

1.문제

\\\\

2.문제해결과정

2-1.문제 요구사항

 

이 문제에서 묻고자 하는 것은 전화번호부에 적힌 전화번호 중에서 어느 한 번호가 다른 번호의 접두사인 경우가 있는지를 확인하는 문제입니다.  

  • 전화번호가 담긴 문자열 배열 phone_book (전화번호의 수는 1개 이상 1,000,000개 이하, 각 전화번호의 길이는 1 이상 20 이하)
  • 같은 전화번호는 중복이 없다.

2-2.문제 분석

 

이 문제를 보고 떠오른 풀이법은 2가지였습니다.

 

첫번째는 HashMap을 사용해서 map에 저장된 키값을 꺼내서 전화번호부에 있는 접두사 부분을 배열에서 잘라서 매칭을 시키는 방법

두번쨰는 배열을 활용을 해서 배열을 정렬을 하고 반복문을 돌려서 접두사와 일치를 하는지를 체크하는 방법

 

그 중에서 정답으로 제출을 방식은 HashMap을 활용해서 푼 방식입니다. 

 

2-3.의사코드 작성

1.전화번호부 배열을 돌려서 키값으로는 배열의 값을 벨류는 반복문의 인덱스 값을 넣기.

2.이중 반복문을 활용을 해서 첫번째는 배열의 길이만큼 내부 반복문은 문자열의 길이만큼 반복문을 돌리고
조건문을 걸어서 맵에 저장된 키값이 배열의 접두사와 맞는지를 체크하기.

 

위의 의사코드를 기반으로 작성한 코드는 아래와 같습니다. 

import java.util.*;

class Solution {
    public boolean solution(String[] phone_book) {
        boolean answer = true;
        Map<String,Integer>map = new HashMap<>();
        
        // 전화번호배열만큼 돌려서 Map에 저장하기.
        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 = 0; j <phone_book[i].length(); j++) {
                // map에 저장된 키값과 배열에 있는 접두사가 맞는지를 확인
                if(map.containsKey(phone_book[i].substring(0,j))) {
                    answer = false;
                    return answer;
                }
            }
        }
        return answer;
    }
}

 

'코테 > JAVA' 카테고리의 다른 글

프로그래머스- 모의고사  (0) 2026.07.20
프로그래머스-기능개발  (0) 2026.07.20
프로그래머스-폰켓몬  (0) 2026.07.17
프로그래머스-프로세스  (0) 2026.07.17
프로그래머스-올바른 괄호  (0) 2026.07.16