문제링크
https://school.programmers.co.kr/learn/courses/30/lessons/42577
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1. 시간복잡도 계산하기
phone_number의 길이는 1~1,000,000이다.
즉. 내가 풀어야할 알고리즘의 시간복잡도는 n,nlogn 의 시간복잡도를 가져야 한다 n^2은 안된다.
2. 문제를 간단히 하기
접두어라는 말이 굉장히 낯설었다.
이 말은 아무 한 번호가 다른 전화번호의 시작부터 일부와 동일하면 False
서로 연관이 없으면 True
해결코드
def solution(phone_book):
# 해시테이블 생성
hash_table = {}
# phone_book을 해시화
for char in phone_book:
hash_table[char] = 1
# 모든 원소를 체크
for cur_char in phone_book:
# 접두어 선언
jubdoo = ""
# 해당 문자의 접두어 체크
for cur_num in cur_char:
jubdoo += cur_num
if jubdoo in hash_table and jubdoo != cur_char:
return False
return True
해시테이블에 phone_book을 전부 입력해놓고.
phone_book의 원소의 접두어를 확인해서 문제를 해결하였다.
'알고리즘' 카테고리의 다른 글
[알고리즘] 다익스트라 (0) | 2023.12.29 |
---|---|
[프로그래머스 LV2] 더 맵게 - 파이썬 (0) | 2023.12.20 |
[프로그래머스 LV 2] 예상 대진표(파이썬) (2) | 2023.12.07 |
백준-1158 (파이썬) (0) | 2023.10.02 |
백준-10866 (1) | 2023.10.02 |