코드업
코드업은 프로그래밍을 배우고 싶은 사람들을 위한 온라인 학습 플랫폼입니다.
codeup.kr
Python 기초 실습 과정에서 입력된 숫자 목록에서 특정 숫자가 존재하는지 확인하는 문제를 풀어보았다.
문제 설명
N개의 숫자가 주어진다.
이후 M개의 질문이 주어지고 각 질문에 대해 해당 숫자가 목록에 존재하는지 확인해야 한다.
존재하면 1, 존재하지 않으면 0을 출력한다.
입력 형식
N
N개의 숫자
M
M개의 질문 숫자
예시 입력
5
2 52 23 55 100
4
5 2 55 99
출력 형식
각 질문 숫자가 존재하면 1, 없으면 0을 출력한다.
예시 출력
0 1 1 0
문제 접근 방법
처음에는 다음과 같은 방식으로 생각할 수 있다.
각 질문마다 전체 숫자를 하나씩 비교
하지만 데이터 크기가 커지면 이 방식은 비효율적이다.
문제 조건을 보면 아래와 같다.
N ≤ 10,000,000
M ≤ 100,000
이 경우 단순 비교 방식은 수행 시간이 크게 증가할 수 있다.
그래서 Python에서는 set 자료구조를 활용하는 것이 좋다.
Python set 자료구조
Python의 set은 집합 자료구조로 다음과 같은 특징이 있다.
- 중복을 허용하지 않는다
- 특정 값 존재 여부 확인이 빠르다
- 해시 기반 구조로 검색 속도가 빠르다
특히 다음 연산이 매우 빠르게 수행된다.
value in set_data
숫자 존재 여부 확인 문제에서 자주 사용된다.
Python 구현 코드
n = int(input())
numbers = set(input().split())
m = int(input())
queries = input().split()
result = []
for q in queries:
if q in numbers:
result.append('1')
else:
result.append('0')
print(' '.join(result))
코드 설명
숫자 개수 입력
n = int(input())
첫 번째 줄에서 숫자의 개수를 입력받는다.
숫자 목록 저장
numbers = set(input().split())
숫자 목록을 입력받은 뒤 set으로 변환한다.
이렇게 하면 이후 존재 여부 확인 속도가 빨라진다.
질문 개수 입력
m = int(input())
확인할 질문의 개수를 입력받는다.
질문 목록 입력
queries = input().split()
확인해야 할 숫자 목록을 입력받는다.
존재 여부 확인
for q in queries:
if q in numbers:
각 질문 숫자가 집합에 포함되어 있는지 확인한다.
결과 출력
print(' '.join(result))
문제 출력 형식에 맞게 공백으로 구분하여 출력한다.
리스트 vs set 성능 차이
| 자료구조 | 검색 방식 | 시간 복잡도 |
| List | 순차 탐색 | O(N) |
| Set | 해시 탐색 | O(1) |
데이터가 많을수록 set을 사용하는 것이 훨씬 효율적이다.
배운 점
- Python의 set 자료구조 활용
- 입력 데이터 처리 방식
- 효율적인 검색 방법
특히 Python에서는 자료구조 선택이 성능에 큰 영향을 준다.
단순한 문제라도 적절한 자료구조를 사용하면 훨씬 효율적인 코드를 작성할 수 있다.
기초 알고리즘 문제지만 Python 자료구조를 활용하는 좋은 연습이 되는 문제였다.
앞으로도 다양한 문제를 풀면서 자료구조 활용, 알고리즘 사고, 효율적인 코드 작성 연습을 계속해볼 예정이다.
'수업 복습' 카테고리의 다른 글
| 데이터 시각화 기초 실습 및 프로젝트 적용 (0) | 2026.03.17 |
|---|---|
| 파이썬으로 CSV 파일 불러와 최고 기온 찾기 (0) | 2026.03.13 |
| Python 실습 과제 정리 (0) | 2026.03.11 |
| Python 기초 복습 (0) | 2026.03.11 |
| 게시글 삭제 프로세스 정리 (0) | 2026.02.10 |