[백준] 10815번 숫자 카드

거북이·2023년 1월 2일
0

백준[실버5]

목록 보기
26/114
post-thumbnail

💡문제접근1

단순 비교 문제라고 판단하였고 이중 반복문을 이용해서 서로 비교하여 가지고 있는 카드라면 1을 추가했고 가지고 있지 않은 카드라면 0을 추가하는 방식으로 코드를 작성했으나 시간 초과가 발생했다.

💡코드1

import sys

N = int(input())
own_card = list(map(int, sys.stdin.readline().split()))
M = int(input())
number_lst = list(map(int, sys.stdin.readline().split()))

lst = []
for i in number_lst:
    for j in own_card:
        if i == j:
            lst.append(1)
            break
    else:
        lst.append(0)

print(*lst)

💡문제접근2

상근이가 가지고 있는 숫자 카드에 적혀있는 수는 같은 수가 적혀있는 경우는 없다고 했으므로 list객체가 아닌 set객체로 변환해주면 시간 효율성이 증대된다.

💡코드2

import sys

N = int(input())
own_card = set(map(int, sys.stdin.readline().split()))
M = int(input())
number_lst = list(map(int, sys.stdin.readline().split()))

lst = []
for i in number_lst:
    if i in own_card:
        lst.append(1)
    else:
        lst.append(0)
print(*lst)

💡문제접근3

이 문제의 알고리즘 분류를 참고했는데 관련 알고리즘으로 '이분 탐색'이 눈에 띄었다. 이분 탐색을 이용해서 코드를 어떻게 짜야할지 좀 더 시간을 가지고 고민해보면서 작성해보자.

💡코드3

💡소요시간 : 40m

0개의 댓글