파이썬 알고리즘 문제 풀이

Baekjoon Online Judge 10815번 파이썬

gogi masidda 2022. 9. 22. 16:58

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

10815번: 숫자 카드

첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,

www.acmicpc.net


print(*result) : 리스트의 요소만 출력


정답 코드

import sys

N = int(sys.stdin.readline())
nums_card = list(map(int,sys.stdin.readline().split()))
M = int(sys.stdin.readline())
nums_int = list(map(int,sys.stdin.readline().split()))

nums_card.sort() #상근이가 가지고 있는 숫자 카드들을 정렬. 정수들은 위치에 맞추어 결과를 출력해야하므로 정렬하지 않음.
result = [0] * (M)

for i in range(M):
  start = 0 #숫자 카드 리스트 인덱스 최소값
  end = N-1 #숫자 카드 리스트 인덱스 최대값
  while start <= end:
    mid = (start + end) // 2
    if nums_card[mid] == nums_int[i]:
      result[i] = 1
      break
    elif nums_card[mid] < nums_int[i]:
      start = mid + 1
    else:
      end = mid - 1
      
print(*result) #리스트를 요소만 빼서 출력
728x90