반응형
무하지
무하지
무하지
전체 방문자
오늘
어제
  • 분류 전체보기
    • 알고리즘
      • 알고리즘+자료구조
      • 문제풀이
    • Python
      • 머신러닝
    • 운영체제
    • Javascript
    • React
    • C#
    • C++
    • Java
    • Kotlin
    • 수학
      • 통계학
    • 기타
    • Computer Science

인기 글

최근 글

티스토리

hELLO · Designed By 정상우.
무하지

무하지

[프로그래머스] 전화번호 목록 (정렬보다는 해시를)
알고리즘/문제풀이

[프로그래머스] 전화번호 목록 (정렬보다는 해시를)

2022. 3. 7. 21:41
반응형
문제: https://programmers.co.kr/learn/courses/30/lessons/42577?language=python3
 

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

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

programmers.co.kr

 

정렬을 이용하는 방법

사실 보자마자 딱 생각나는 방법은 정렬하고 두 개씩 비교하는 방법입니다.

 

정렬하면 앞부분이 비슷한 것들끼리 인접하게 되기 때문에 인접한 두 전화번호끼리만 비교해도 결과는 맞게 나옵니다.

 

 

효율성 테스트도 나쁘지 않게 나오네요.

 

해시로 풀어보기

그래도 해시 관련 문제이므로 해시로 다시 풀어봤습니다.

 

접두사가 될 수 있는 것들을 모두 해시맵에 저장하고,

 

전화번호 목록을 돌면서 해시맵에 있는 번호와 일치하는 게 있는지 검사합니다.

 

 

효율성 테스트를 보면 정렬을 이용한 게 수십배씩 더 빨라서 정렬이 더 좋지 않나하는 생각이 들 수도 있습니다.

 

이 문제에 대해서는 그럴 수도 있겠지만, 만약 전화번호가 추가된다면 그때마다 정렬을 다시 해야하기 때문에

 

현실적인 풀이는 해시를 이용한 방법이라고 생각합니다.

 

 

 

반응형

'알고리즘 > 문제풀이' 카테고리의 다른 글

[프로그래머스] 베스트앨범 (+파이썬 테크닉)  (0) 2022.03.09
[프로그래머스] 위장  (0) 2022.03.08
[프로그래머스] 완주하지 못한 선수  (0) 2022.03.06
[백준] 2581 - 소수찾기(3)  (0) 2020.12.25
[백준] 1929 - 소수찾기(2) {시간초과이슈}  (0) 2020.12.25
    '알고리즘/문제풀이' 카테고리의 다른 글
    • [프로그래머스] 베스트앨범 (+파이썬 테크닉)
    • [프로그래머스] 위장
    • [프로그래머스] 완주하지 못한 선수
    • [백준] 2581 - 소수찾기(3)
    무하지
    무하지

    티스토리툴바