프로그래머스 2단계 : 전화번호 목록 (Java 자바)

2023. 9. 28. 18:33·💻 코딩테스트/programmers
728x90
문제 설명

 

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

  • 구조대 : 119
  • 박준영 : 97 674 223
  • 지영석 : 11 9552 4421

전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 return 하도록 solution 함수를 작성해주세요.

 

 

 

제한 사항

 

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

 

입출력 예

 

 

 

 

풀이

 

주어진 전화번호 배열에서 어떤 번호가 다른 번호의 접두어인지 확인하는 문제입니다. 즉, 한 전화번호가 다른 전화번호의 첫 부분과 동일한 숫자로 시작하는 경우를 찾아내야 합니다. 전화번호 배열을 순회하면서 접두어 관계를 확인합니다.

 

1. 주어진 전화번호 배열을 HashSet에 저장하여 중복된 전화번호가 제거되며, 빠르게 검색할 수 있습니다.

2. 각 전화번호에 대해 루프를 돌면서 모든 가능한 접두어를 검사합니다. 이를 위해 두 번째 루프에서 현재 전화번호를 문자열로 가져오고, 문자열의 첫 번째 문자부터 (길이-1)까지의 접두어를 만듭니다.

3. 만약 해당 접두어가 HashSet에 이미 존재한다면, 다른 전화번호의 접두어인 것이므로 false를 반환합니다.

4.. 모든 전화번호에 대한 검사가 끝나면, 어떤 번호가 다른 번호의 접두어인 경우가 없다는 것을 의미하므로 true를 반환합니다.

 

import java.util.*;

class Solution {
    public boolean solution(String[] phone_book) {
        
        // 전화번호를 저장할 HashSet을 생성합니다.
        Set<String> set = new HashSet<>();
        
        // 1. 전화번호를 HashSet에 추가합니다.
        for (String phone : phone_book) {
            set.add(phone);
        }
        
        // 2. 각 전화번호에 대해 접두어를 검사합니다.
        for (String phone : phone_book) {
            for (int i = 1; i < phone.length(); i++) {
                // 현재 전화번호의 첫 번째부터 (길이-1)까지의 접두어를 가져옵니다.
                String prefix = phone.substring(0, i);
                
                // 만약 해당 접두어가 HashSet에 존재한다면, 다른 전화번호의 접두어인 경우이므로 false를 반환합니다.
                if (set.contains(prefix)) {
                    return false;
                }
            }
        }
        
        // 3. 모든 전화번호가 접두어 관계가 아니라면 true를 반환합니다.
        return true;
    }
}
728x90
저작자표시 비영리 변경금지 (새창열림)

'💻 코딩테스트 > programmers' 카테고리의 다른 글

프로그래머스 2단계 : 땅따먹기 (Java 자바)  (0) 2023.09.28
프로그래머스 2단계 : 모음사전 (Java 자바)  (1) 2023.09.28
프로그래머스 2단계 : 타겟 넘버 (Java 자바)  (0) 2023.09.21
프로그래머스 2단계 : 피로도 (Java 자바)  (0) 2023.09.21
프로그래머스 3단계 : 미로 탈출 명령어 (Java 자바)  (0) 2023.09.21
'💻 코딩테스트/programmers' 카테고리의 다른 글
  • 프로그래머스 2단계 : 땅따먹기 (Java 자바)
  • 프로그래머스 2단계 : 모음사전 (Java 자바)
  • 프로그래머스 2단계 : 타겟 넘버 (Java 자바)
  • 프로그래머스 2단계 : 피로도 (Java 자바)
gxxg
gxxg
함께 일하고 싶은 개발자를 꿈꾸는 예비개발자의 공부 기록
  • gxxg
    공공
    gxxg
  • 전체
    오늘
    어제
    • 분류 전체보기 (138)
      • ☁️ 구름 x 카카오 Deep Dive 풀스택 (7)
        • html, css (1)
        • Java (3)
        • 스프링 MVC (0)
      • 💻 코딩테스트 (89)
        • 백준 (2)
        • programmers (87)
      • SQLD (1)
      • Language (3)
        • Java (2)
        • JavaScript (1)
      • Style Sheet (0)
        • CSS (0)
        • SCSS & SASS (0)
      • DBMS (2)
        • Oracle (2)
        • MySQL (0)
        • postgresql (0)
        • 데이터베이스 기초 이론 (0)
      • React (0)
      • SpringBoot (0)
      • JSP (2)
      • 알고리즘 (0)
      • 2023-02 몰입형 SW 정규 교육 (24)
        • 9월 프로젝트 (8)
      • 벽돌깨기 (4)
      • Etc (4)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    spring
    java
    programmers
    자바
    프로그래머스
    CSS
    JSP
    Lv2
    HTML
    프로젝트 구조
    LV3
    springboot
    Lv0
    오블완
    POST
    DFS
    구현체
    junit 테스트
    javascript
    eclipse
    티스토리챌린지
    회원 관리 시스템
    0단계
    2단계
    코테
    톰캣
    이클립스
    3단계
    코딩테스트
    자바스크립트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
gxxg
프로그래머스 2단계 : 전화번호 목록 (Java 자바)
상단으로

티스토리툴바