수 찾기

honeyricecake·2022년 7월 1일
0

파이썬

목록 보기
23/26
import sys
input = sys.stdin.readline

N = int(input())
arr = set(map(int,input().split()))
M = int(input())
brr = list(map(int, input().split()))
ans = []

for x in brr:
    ans.append('1' if x in arr else '0')

print('\n'.join(ans))
  1. sys 라이브러리 에는 표준입출력과 관련된 함수들이 있다.
    그 중 sys.stdin.readline()은 줄 단위로 읽어오므로 기존의 input()보다 훨씬 빠르다.
    대신 뒤에 개행문자도 함께 읽어오므로 주의해야한다.

  2. ans 정답 배열을 미리 만들어 놓고 ans.append()를 이용해 정답들을 추가한 뒤
    이 문제는 정답들이 한글자씩이므로 join함수를 통해 개행문자를 추가하였다.

  3. for x in list를 잘 기억해두자.

rkaxhdals 님의 코드
https://www.acmicpc.net/source/35893905

import os, io,sys
I=io.BytesIO(os.read(0, os.fstat(0).st_size)).readline
I()
s=set(I().split())
I()
for x in I().split():sys.stdout.write('1\n'if x in s else'0\n')

첫 줄은 잘 이해가 되지 않으나
s = set(I().split())은 나와 같은 로직이다. 단, 나와 달리 map을 써서 수들을 int형으로 바꾸지 않았는데, 이는 문자열 그대로 두어도 수를 찾는데는 하등 지장이 없기 때문이다.

sys.stdout.write('1\n'if x in s else'0\n')
이는 그 때 그 때 출력하는 함수들 중 print보다 성능이 매우 좋은 함수이다.

0개의 댓글