[백준] 5052 전화번호 목록 (파이썬 python)

2024. 2. 21. 12:42· Algorithm/BOJ
목차
  1. 문제 링크
  2. 문제 풀이

 

 

문제 링크

 

https://www.acmicpc.net/problem/5052

 

5052번: 전화번호 목록

첫째 줄에 테스트 케이스의 개수 t가 주어진다. (1 ≤ t ≤ 50) 각 테스트 케이스의 첫째 줄에는 전화번호의 수 n이 주어진다. (1 ≤ n ≤ 10000) 다음 n개의 줄에는 목록에 포함되어 있는 전화번호가

www.acmicpc.net

 

 

 

문제 풀이

 

이중 for문으로 하나하나 일치 여부를 확인하기에는 전화번호 개수 범위가 최대 10000개까지로

시간 초과 가능성이 높았습니다.

그래서 비교 횟수를 최소화하는 방법을 고민하던 중, 문자열의 정렬 원리를 통해 해결했습니다.

문자열은 대소비교를 통해 정렬되는 숫자와 달리 앞에서부터 비교되어 정렬됩니다.

 

예를 들어 아래 숫자를

311
27625999
31125426

 

문자열을 기준으로 정렬할 경우

27625999

311

31125426

다음과 같이 정렬되어, 일치되는 문자가 접두어로 있을 경우 바로 앞뒤로 정렬됩니다.

결국 문자열 정렬을 한 뒤 전체 인덱스에 대해 앞뒤 비교만 해주면 되는 것입니다.

 

전체 코드

 

def check(nums):
    for i in range(len(nums) - 1):
        if nums[i] == nums[i + 1][:len(nums[i])]:
            return False
    return True

t = int(input())
for _ in range(t):
    n = int(input())
    nums = []
    for _ in range(n):
        nums.append(str(input().rstrip()))
    nums.sort()
    if check(nums):
        print("YES")
    else:
        print("NO")
저작자표시 비영리 변경금지 (새창열림)

'Algorithm > BOJ' 카테고리의 다른 글

[백준] 11000 강의실 배정 (파이썬 python)  (0) 2024.02.27
[백준] 2839 설탕 배달 (파이썬 python)  (1) 2024.02.27
[백준] 5430 AC (파이썬 python)  (1) 2024.02.21
[백준] 1766 문제집 (파이썬 python)  (0) 2024.02.20
[백준] 1715 카드 정렬하기 (파이썬 python)  (0) 2024.02.20
  1. 문제 링크
  2. 문제 풀이
'Algorithm/BOJ' 카테고리의 다른 글
  • [백준] 11000 강의실 배정 (파이썬 python)
  • [백준] 2839 설탕 배달 (파이썬 python)
  • [백준] 5430 AC (파이썬 python)
  • [백준] 1766 문제집 (파이썬 python)
YOONJELLY
YOONJELLY
YOONJELLY
JELLYJELLY
YOONJELLY
전체
오늘
어제
  • 분류 전체보기 (153)
    • Springboot (2)
    • Android (15)
    • Algorithm (126)
      • 개념 (8)
      • BOJ (91)
      • Programmers (15)
      • SWEA (4)
    • 경험_기록 (1)
    • RIM_TIP (4)
    • Github (2)
    • CS (1)
      • 운영체제 (1)
      • 컴퓨터네트워크 (0)
      • 정보처리기사 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Android
  • softeer
  • 코틀린
  • 완전탐색
  • 코딩테스트
  • 이것이코딩테스트다
  • Python
  • 이진탐색
  • 파이썬
  • 자료구조
  • 그리디
  • BFS
  • programmers
  • 큐
  • 알고리즘
  • SWEA
  • 스택
  • 다이나믹프로그래밍
  • 백준
  • DP
  • 딕셔너리
  • 소프티어
  • DFS
  • 프로그래머스
  • 액티비티컴포넌트
  • 정렬
  • 문자열
  • 안드로이드
  • BOJ
  • kotlin

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
YOONJELLY
[백준] 5052 전화번호 목록 (파이썬 python)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.