백준 - Python

[백준 - 1920][Python] 수 찾기

SeongJo 2023. 3. 2. 20:00
반응형

안녕하세요. 성조입니다.

이번 포스팅은 Python 3 버전을 기준으로 풀이됐습니다.

 

예~~전에 자바로 풀었는데 파이썬으로 어떻게 간략하게 만들 수 있을까 고민을 많이 하게 됐던 문제였습니다.

 

 

문제 출처

https://www.acmicpc.net/problem/1920

 

1920번: 수 찾기

첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들

www.acmicpc.net


문제

N개의 정수 A[1], A[2], …, A[N]이 주어져 있을 때, 이 안에 X라는 정수가 존재하는지 알아내는 프로그램을 작성하시오.

 

 

입력

첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들이 A안에 존재하는지 알아내면 된다. 모든 정수의 범위는 -231 보다 크거나 같고 231보다 작다.

 

 

출력

M개의 줄에 답을 출력한다. 존재하면 1을, 존재하지 않으면 0을 출력한다.

 

 

코드

N = int(input())
first_data = set(map(int, input().split()))

M = int(input())
second_data = list(map(int, input().split()))

for _ in second_data:
    if _ in first_data:
        print("1")
    else:
        print("0")

 

풀이

1. N과 M 값들을 비교해야 하는 문제이다. 문제에 나오는 것과 동일하게 값들을 입력 받는다. 이때 첫번째 기준으로 입력받은 값은 집합-> 딕셔너리로 변하지 않는 값이며, 비교할 값은 리스트로 변할 수 있는 값을 입력 받는다. (비교군으로 선별할 것이므로)

2. 변하는 리스트의 각 요소들을 순서대로 반복한다.

3. 먄약 변하지 않는 set 집합에 second_data 함수가 존재한다면 1을 출력하고, 존재하지 않는다면 0을 출력한다.

 

간략하게 다시 정리하면 불변의 값을 기준 값으로 두고(딕셔너리 자체는 가변(mutable)적인 객체로 활용할 수 있다. 하지만 키 값은 불변(immutable)하다. ), 리스트의 요소 값으로 비교하여 공통되는 요소가 있는지 확인하는 코드이다.

 


 

올바르지 못한 내용이나 궁금한 내용이 있다면 언제든지 댓글로 지식을 얘기해 주시면 감사드리겠습니다.

더 좋은 포스팅 작성할 수 있도록 노력해보겠습니다.

다음 포스팅 때 뵙겠습니다.

반응형