안녕하세요. 성조입니다.
이번 포스팅은 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)하다. ), 리스트의 요소 값으로 비교하여 공통되는 요소가 있는지 확인하는 코드이다.
올바르지 못한 내용이나 궁금한 내용이 있다면 언제든지 댓글로 지식을 얘기해 주시면 감사드리겠습니다.
더 좋은 포스팅 작성할 수 있도록 노력해보겠습니다.
다음 포스팅 때 뵙겠습니다.
'백준 - Python' 카테고리의 다른 글
[백준 - 14467][Python] 소가 길을 건너간 이유 1 (0) | 2023.03.05 |
---|---|
[백준 - 1316][Python] 그룹 단어 체커 (0) | 2023.03.03 |
[백준 - 25206][Python] 너의 평점은 (0) | 2023.02.26 |
[백준 - 1010][Python] 다리 놓기 (0) | 2023.02.26 |
[백준 - 11478][Python] 서로 다른 부분 문자열의 개수 (0) | 2023.02.22 |