[백준 10815] 숫자 놀이

🐥·2026년 3월 27일

백준

목록 보기
20/21

  • 문제 이해하기

    동일한 숫자 자리는 '1'이 아니면 '0'이 출력

  • 소스코드

코드를 입력하세요n = int(input("숫자 카드의 갯수 : "))
n_list = []
for i in range(n):
    n_list.append(int(input()));

m = int(input("찾고자 하는 숫자 카드의 갯수 : "))
m_list = []
for i in range(m):
    m_list.append(int(input()));

for idx in m_list:
    if idx in n_list:
        print(1, end=' ')
    else:
        print(0, end=' ') 

내가 풀어본 코드
업로드중..
에러가 났다
알아보니 리스트를 쓰면 순차적으로 하나하나 다 돌아서 N X M 번을 돈다 하였다.
그래서 런타임 오류!!

import sys

# 한 줄씩 읽는 방식으로 변경
n = int(sys.stdin.readline())
n_cards = set(sys.stdin.readline().split()) # 바로 set으로 만들면 더 빠름!

m = int(sys.stdin.readline())
m_cards = sys.stdin.readline().split()

# 결과 비교
result = []
for card in m_cards:
    if card in n_cards:
        result.append("1")
    else:
        result.append("0")

print(" ".join(result))

  • 파이썬으로 문제를 풀 경우 sys.stdin.readline()을 쓰면 훨씬 더 빠르다
  • 요소를 찾는 문제가 나오면 set을 활용하는 것이 시간측 활용에 좋다
  • m_card는 순서대로 0,1이 출력해야 하기 때문에 set말고 list를 썼다
  • join을 쓰는 이유: 리스트를 예쁘게(공백 포함) 한 줄로 출력하려고 (문자열만 가능)
    덤으로 얻는 것: 출력 속도가 빨라져서 '시간 초과'를 피할 수 있다
profile
열심히 공부하자!!

0개의 댓글