본문 바로가기
카테고리 없음

[BOJ][Python] 2776번 - 암기왕[정렬- 실버 4티어]

by 우주를놀라게하자 2022. 3. 12.
반응형
SMALL

알고리즘 태그

[정렬]

태그 설명

정렬이란 데이터의 집합을 어떠한 기준의 대소관계를 따져 일정한 순서로 줄지어 세우는것

문제

백준 문제 - 로프

링크: 로프

문제설명

연종이는 엄청난 기억력을 가지고 있다. 그래서 하루 동안 본 정수들을 모두 기억 할 수 있다. 하지만 이를 믿을 수 없는 동규는 그의 기억력을 시험해 보기로 한다. 동규는 연종을 따라 다니며, 연종이 하루 동안 본 정수들을 모두 ‘수첩1’에 적어 놓았다. 그것을 바탕으로 그가 진짜 암기왕인지 알아보기 위해, 동규는 연종에게 M개의 질문을 던졌다. 질문의 내용은 “X라는 정수를 오늘 본 적이 있는가?” 이다. 연종은 막힘없이 모두 대답을 했고, 동규는 연종이 봤다고 주장하는 수 들을 ‘수첩2’에 적어 두었다. 집에 돌아온 동규는 답이 맞는지 확인하려 하지만, 연종을 따라다니느라 너무 힘들어서 여러분에게 도움을 요청했다. 동규를 도와주기 위해 ‘수첩2’에 적혀있는 순서대로, 각각의 수에 대하여, ‘수첩1’에 있으면 1을, 없으면 0을 출력하는 프로그램을 작성해보자.


수첩2’에 적혀있는 M개의 숫자 순서대로, ‘수첩1’에 있으면 1을, 없으면 0을 출력한다.

예제 입력 

1
5
4 1 5 2 3
5
1 3 7 9 5

예제 출력 

1
1
0
0
1

 

문제 설명은 딱히 필요없을거같다. 말 그래도 첫번째 수첩에 있는 값을 두번째 수첩에 잘 받아적었는지를 판단하면 된다.

 

여기서 주의할 점은 T,N, M값도 예외없이 받아줘야한다는 점이다..사용하지 않아도 받긴해야한다 추가적으로 
List를 사용한 처리는 런타임에러가 날 수 있어서set을 이용해서 처리해야한다. 문제에 중복된 값은 없다고 명시가 되어있지 않지만...그렇다고 한다..

 

# 테스트 케이스 입력
T = int(input())

for _ in range(T):
  # 수첩1 정수 N개만큼 입력, 사용하진 않지만 받아줘야지 에러가 안난다..
  N = int(input())
  # 수첩1에 적어둔 정수 갯수, 
  # 시도해본 결과 List로 처리했을 경우 런타임 오류가 나서 찾아보니, 중복을 제거해서
  # 처리해야한다고한다...
  # 그래서 Set으로 바꿔서 처리했다.
  Note_1 = set(map(int, input().split()))
  
  # 수첩2에 적어둔 정수 갯수, 사용하진 않지만 받아줘야지 에러가 안난다..
  M = int(input())
  # 수첩2 정수 N개만큼 입력
  Note_2 = list(map(int, input().split()))

  #아무래도 이 부분에서 중복이 있거나? 중복된 값을 여러차례 찾아서 시간초과가 나는거같다..
  for N2 in Note_2:
    if N2 in Note_1:
      print(1)
    else:
      print(0)
반응형
LIST