우주에서 글을 적어본다
99클럽 코테 스터디 14일차 TIL + 이분 탐색 본문
[오늘의 학습 키워드 및 문제]
- 백준의 "숫자 카드 2" 문제를 풀었다.
- 어제와 비슷한 같은 입력의 비슷한 문제였다.
- 오늘도 여러 가지 풀이 방법으로 풀어봤다.
[나의 코드]
# 첫 번째 풀이
n = int(input())
given = list(map(int, input().split()))
m = int(input())
holded = list(map(int, input().split()))
result = {}
for num in given:
if num not in result:
result[num] = 1
else:
result[num] += 1
for num in holded:
if num in result:
print(result[num], end=' ')
else:
print(0, end=' ')
첫 번째 풀이는 해시를 이용한 풀이법이다.
설명하게 더 있나 싶다.
# 두 번째 풀이
import bisect
n = int(input())
given = list(map(int, input().split()))
m = int(input())
holded = list(map(int, input().split()))
given.sort()
result = []
# 이분 탐색으로 각 숫자의 개수 찾기
for num in holded:
left_index = bisect.bisect_left(given, num)
right_index = bisect.bisect_right(given, num)
result.append(right_index - left_index)
print(' '.join(map(str, result)))
두 번째 풀이는 이분 탐색 풀이법이다.
이번 문제는 조건이 달라져서 생으로 구현할 경우 코드가 미친 듯이 길어진다.
그렇기 때문에 bisect라는 라이브러리를 사용했다.
참고로 bisect는 이진 탐색을 구현할 수 있게 해주는 라이브러리다.
[오늘의 회고]
- 어제와 비슷한 문제였지만, 조건이 달라질 때 달라지는 코드에 적응을 해볼 수 있는 좋은 경험이었다.
- 근데 오늘은 대충 썼다. 다른 거 좀 바빠서... 끝!
'항해99 TIL' 카테고리의 다른 글
99클럽 코테 스터디 16일차 TIL + 완전 탐색 (0) | 2024.08.06 |
---|---|
99클럽 코테 스터디 15일차 TIL + 완전 탐색 (0) | 2024.08.05 |
99클럽 코테 스터디 13일차 TIL + 이분 탐색 그리고 정렬을 곁들인.. (0) | 2024.08.03 |
99클럽 코테 스터디 12일차 TIL + 정렬과 구현 (0) | 2024.08.02 |
99클럽 코테 스터디 11일차 TIL + 구현 (0) | 2024.08.01 |