Programmers / 2단계 / 전화번호 목록 / python

2024. 2. 6. 21:44·코딩테스트/programmers (python)

 

코딩테스트 연습 - 전화번호 목록 | 프로그래머스 스쿨 (programmers.co.kr)

 

 

 

나의 풀이

- 해시 이용

def solution(phone_book):
    # 1. Hash map을 만든다
    hash_map = {}
    for phone_number in phone_book:
        hash_map[phone_number] = 1
    
    # 2. 접두어가 Hash map에 존재하는지 찾는다
    for phone_number in phone_book:
        jubdoo = ""
        for number in phone_number:
            jubdoo += number
            # 3. 접두어를 찾아야 한다 (기존 번호와 같은 경우 제외)
            if jubdoo in hash_map and jubdoo != phone_number:
                return False
    return True

 

1) HashMap 만들기

  • HashMap이란 Key-Value의 Pair를 관리하는 클래스이다.
  • Key는 phone_number / Value는 1로 설정한다.
  • 기본적으로 Hash map은 위와 같이 만들어주는게 정석이다.
  • 여기서 Value == 1의 의미는 숫자가 1개 존재한다는 것이다.
  •  

2) 모든 전화번호 Hashing 하기 (Hash Map에 추가하기)

  • 'Hashing을 한다'라고도 표현하는데, HashMap에 전화번호를 전부 추가해보자. 
  • 위 코드의 동작 방식은 다음 예시로 설명하는 것이 가장 쉽게 이해가 가능할 것이다.
  • Hash Map을 보고 나면 별게 아니다. 이 문제에서는 Key 값으로 전화 번호를 관리하는 전화번호부다.

 

 

3) 각 전화번호의 접두어가 HashMap에 존재하는지 확인하기

  • 존재하는 모든 전화번호가 HashMap에 등록되었다.
  • 이제는 각 전화번호의 접두어가 HashMap에 존재하는지 확인하는 것이다.
  • Length 1~전체 길이 - 1 까지의 substring을 떼어서, HashMap에 존재한다면, 접두어가 존재한다고 확인할 수 있다.
  • 간단 예시에서는 "12"의 substring인 "1"을 추출한다.
  • if jubdoo in hash_map
    • String이라는 Key가 현재 hash_map에 존재하는지 확인하는 동작

 

'코딩테스트 > programmers (python)' 카테고리의 다른 글

Programmers / 2단계 / H-Index / python  (0) 2024.02.08
Programmers / 2단계 / n^2 배열 자르기 / python  (1) 2024.02.07
Programmers / 2단계 / 할인 행사 / python  (0) 2024.02.06
★ Programmers / 2단계 / 괄호 회전하기 / python  (0) 2024.02.06
Programmers / 2단계 / 연속 부분 수열 합의 개수 / python  (0) 2024.02.06
'코딩테스트/programmers (python)' 카테고리의 다른 글
  • Programmers / 2단계 / H-Index / python
  • Programmers / 2단계 / n^2 배열 자르기 / python
  • Programmers / 2단계 / 할인 행사 / python
  • ★ Programmers / 2단계 / 괄호 회전하기 / python
seulll
seulll
개인 공부 / 정리 블로그입니다
  • seulll
    seulll
    seulll
  • 전체
    오늘
    어제
    • 분류 전체보기 (320) N
      • 코딩테스트 (221) N
        • programmers (python) (155)
        • 백준 (python) (64) N
      • 자료구조 | 알고리즘 (14)
      • 개발 | 프로젝트 (18) N
        • Python (4)
        • Java | Spring (6)
        • Unity (3)
        • API (3)
      • CS (15)
        • Network (5)
        • SQL (2)
        • OS (4)
      • 데이터 분석 (14)
      • 기타 (12)
  • 블로그 메뉴

    • 홈
    • 태그
    • 글쓰기
    • 설정
  • 링크

    • GitHub
  • 인기 글

  • 태그

    Boxplot
    바다코끼리
    2 x n 타일링
    오차행렬
    데이터분석
    solving environment
    야근 지수
    Greedy
    박스플롯
    kakao map api
    Python
    카카오맵
    프렌즈4블록
    그리디 알고리즘
    오블완
    백엔드
    train_test_split
    asterisk
    대입 표현식
    confusion matrix
    백엔드 개발자 역량
    프로그래머스
    파이썬
    카카오맵 api
    코딩테스트
    API
    티스토리챌린지
    모델 성능 평가
    백엔드 개발자
    웹크롤링
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
seulll
Programmers / 2단계 / 전화번호 목록 / python
상단으로

티스토리툴바