[python 파이썬] 백준 2776번 암기왕

2021. 1. 29. 00:58Algorithm/BOJ

반응형

www.acmicpc.net/problem/2776

 

2776번: 암기왕

연종이는 엄청난 기억력을 가지고 있다. 그래서 하루 동안 본 정수들을 모두 기억 할 수 있다. 하지만 이를 믿을 수 없는 동규는 그의 기억력을 시험해 보기로 한다. 동규는 연종을 따라 다니며,

www.acmicpc.net

 

1. 첫번째 코드 - 틀림

처음의 테스트케이스 개수 입력을 처음에 아무렇지 않게 여기지않아 틀렸다. 

테스트케이스 입력 개수도 신경쓰기!

import sys

# t = int(input())
# n = int(input())

t = int(sys.stdin.readline())
n = int(sys.stdin.readline())

# memo1 = list(map(int,input().split()))
memo1 = list(map(int,sys.stdin.readline().split()))

m = int(input())
# memo2 = list(map(int,input().split()))
memo2 = list(map(int,sys.stdin.readline().split()))

for m in memo2:
  if m in memo1:
    print(1)
  else:
    print(0)

    

 

2. 두번째 코드 - 틀림 

테스트케이스 부분 추가후에 돌려보니 시간 초과가 났다. 

아무리 봐도 맞는 코드 같아 검색해보니 

시간초과 나는 이유가 list로 했을 때 난다고 하더라. 그래서 list 를 set으로 바꿔주었다 

import sys

# t = int(input())
t = int(sys.stdin.readline())

for i in range(t):
  # n = int(input())
  n = int(sys.stdin.readline())
  # memo1 = list(map(int,input().split()))
  memo1 = list(map(int,sys.stdin.readline().split()))

  # m = int(input())
  m = int(sys.stdin.readline())
  # memo2 = list(map(int,input().split()))
  memo2 = list(map(int,sys.stdin.readline().split()))

  for m2 in memo2:
    if m2 in memo1:
      print(1)
    else:
      print(0)

 

3. 세번째 코드 - 맞음

테스트 케이스 부분 추가! 

list 를 set으로 바꿔줌!

import sys

# t = int(input())
t = int(sys.stdin.readline())

for i in range(t):
  # n = int(input())
  n = int(sys.stdin.readline())
  # memo1 = list(map(int,input().split()))
  memo1 = set(map(int,sys.stdin.readline().split()))

  # m = int(input())
  m = int(sys.stdin.readline())
  # memo2 = list(map(int,input().split()))
  memo2 = list(map(int,sys.stdin.readline().split()))

  for m2 in memo2:
    if m2 in memo1:
      print(1)
    else:
      print(0)

 

* 테스트케이스 개수 신경쓸 것 

* 시간 초과 날 때 list를 set으로 바꿔볼 것!

 

<참고>

alpyrithm.tistory.com/139

반응형