티스토리 뷰
포스팅에 앞서 내용이 틀릴 수 있습니다.
해당 부분 지적 감사히 받습니다.
문제를 보자.
오랜만에 다시 문제를 접하니 처음에 그냥 생각 없이 풀었다.
코드부터 보자.
코드
array = []
array2 = []
n = int(input())
array = list(map(int,input().split()))
m= int(input())
array2 = list(map(int,input().split()))
for k in array2 :
if k in array :
print('1',end=' ')
else:
print('0',end=' ')
시간초과다.
입력값을 보니 500000이 될 수 있다.
위 코드의 경우 최악의 시간이 500000^2만번으로 예상된다.
따라서 해쉬테이블을 만들어 사용했다.
해쉬테이블은 충돌이 없을 경우 시간복잡도 O(1)을 가진 아주 효율적인 방법이다.
또한 충돌하여도 O(n)의 시간복잡도를 가진다.
하지만 전제조건에 "두 숫자 카드에 같은 수가 적혀있는 경우는 없다."라고 주어져 있기에, 충돌은 일어나지 않는다.
정답 코드
코드
array = []
array2 = []
n = int(input())
array = list(map(int,input().split()))
dict={i:i for i in array}
m= int(input())
array2 = list(map(int,input().split()))
for k in array2 :
if k in dict :
print('1',end=' ')
else:
print('0',end=' ')
배운 점
1. 해쉬테이블은 충돌이 발생할 수 있는데, 오픈 방식과 클로즈 방식을 통해 해결할 수 있다.
2. 해쉬테이블은 시간 복잡도는 해소할 수 있지만, 공간복잡도에서는 불리한 모습을 보여준다.
'백준' 카테고리의 다른 글
백준 7785 문제풀이 [python] (0) | 2023.07.25 |
---|---|
백준 14425 문제풀이 [python] (0) | 2023.07.25 |
백준 1037 문제풀이 [python] (0) | 2023.07.18 |
백준 3009 문제풀이 [python] (0) | 2023.07.17 |
백준 11005 문제풀이 [python] (0) | 2023.07.17 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 기술스택
- webhacking.kr
- Los
- java
- 스프링
- spring
- 프로그래머스 상품을 구매한 회원 비율 구하기 파이썬
- samron3
- 자바
- los 15단계
- 백준 피보나치
- extends
- static
- lord of sql
- zixem
- 김영한 실전 자바 기초
- 상품을 구매한 회원 비율 구하기 파이썬
- 백준
- los 15
- 코딩테스트 준비
- 백준 피보나치 수열
- 김영한
- 프로그래머스
- ys.k
- 김영한 실전 자바 중급
- 프로그래머스 상품을 구매한 회원 비율 구하기
- 상속
- 김영한 실전 자바 기본
- samron
- 코딩테스트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
글 보관함
250x250