[이분탐색] 백준 #10815 숫자 카드 - Python

2024. 5. 7. 22:44· Algorithm/Baekjoon
목차
  1. 🗂️ 문제
  2. 💡 접근법
  3. 😎 내 코드
  4. 🧐 배운 점
  5. ✅ 정답 확인

🗂️ 문제

링크: https://www.acmicpc.net/problem/10815

 

💡 접근법

이분탐색 시 탐색 범위를 설정해야 한다. 해당 문제에서는 카드 리스트를 정렬하고, 카드 리스트 인덱스의 최솟값(0)과 최댓값(len(card_list)-1)을 low와 high로 각각 지정한다.

 

mid의 값을 변경하며 탐색한다. 이때 카드 리스트에서 mid 인덱스에 해당하는 값보다 상근이가 가지고 있는 숫자가 작으면 mid 값을 줄여야하므로 high = mid - 1로 설정한다. 반대의 경우엔 mid 값을 키워야하므로 low = mid + 1로 설정한다.

 

만약 카드 리스트에서 mid 인덱스에 해당하는 값이 상근이가 가지고 있는 숫자와 같다면 1을 저장한다.

 

😎 내 코드

import sys

N = int(sys.stdin.readline())
card_list = list(map(int, sys.stdin.readline().split()))

M = int(sys.stdin.readline())
num_list = list(map(int, sys.stdin.readline().split()))

card_list.sort()

result = [0] * len(num_list)
for idx, num in enumerate(num_list):
    low = 0  # 인덱스의 최솟값
    high = len(card_list) - 1  # 인덱스의 최댓값

    while (low <= high):
        mid = (low+high) // 2  # 인덱스
        mid_value = card_list[mid]

        if mid_value == num:
            result[idx] = 1
            break
        elif mid_value > num:
            high = mid - 1
        elif mid_value < num:
            low = mid + 1
    
print(*result)

 

🧐 배운 점

  • python의 in 함수는 선형탐색이므로 시간복잡도가 O(n)이다. 즉, 이분탐색보다 느리다.

 

✅ 정답 확인

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

[그래프] 백준 #1753 최단경로 - Python  (0) 2024.05.11
[BFS] 백준 #18352 특정 거리의 도시 찾기 - Python  (0) 2024.05.11
[DP] 백준 #11726 2xn 타일링 - Python  (0) 2024.05.05
[이분탐색] 백준 #1654 랜선 자르기 - Python  (1) 2024.05.03
[이분탐색] 백준 #2805 나무 자르기 - Python  (0) 2024.05.03
  1. 🗂️ 문제
  2. 💡 접근법
  3. 😎 내 코드
  4. 🧐 배운 점
  5. ✅ 정답 확인
'Algorithm/Baekjoon' 카테고리의 다른 글
  • [그래프] 백준 #1753 최단경로 - Python
  • [BFS] 백준 #18352 특정 거리의 도시 찾기 - Python
  • [DP] 백준 #11726 2xn 타일링 - Python
  • [이분탐색] 백준 #1654 랜선 자르기 - Python
jyjyjy25
jyjyjy25
jyjyjy25
기록하는 습관
jyjyjy25
전체
오늘
어제
  • 분류 전체보기 (148)
    • Algorithm (87)
      • Baekjoon (59)
      • Programmers (28)
    • Courses (18)
      • Java (3)
      • Spring (11)
      • JPA (4)
    • CS (7)
    • DevOps (8)
      • AWS (8)
    • Framework (10)
      • Spring (5)
      • JPA (5)
    • Security (13)
      • Web Hacking (10)
      • Dreamhack (0)
      • ISMS (3)
    • Research (1)
    • Etc (4)

인기 글

최근 글

hELLO · Designed By 정상우.v4.2.1
jyjyjy25
[이분탐색] 백준 #10815 숫자 카드 - Python
상단으로

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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