개수 세기
문제는 다음과 같습니다.

첫째 줄에 정수의 개수 N이 주어집니다.
둘째 줄에는 정수가 공백으로 구분되어 주어져있습니다.
셋째 줄에는 찾으려고 하는 정수 v가 주어집니다.
첫째 줄에 주어진 정수 N으로 가변적인 부분을 대신하여 시간복잡도를 줄일 생각을 하였으나, 보다 단순하게
이 문제의 해답 코드를 두가지 방식으로 생각했습니다.
첫 번째 방식은 list를 이용한 단순 count 방식입니다.
N = int(input())
L = list(map(int,input().split()))
M = int(input())
print(L.count(M))
두 번째 방식은 list와 dict를 이용한 단순 HashMap 방식입니다.
d ={}
N = int(input())
L = list(map(int,input().split()))
M = int(input())
for a in L:
if a not in d:
d[a] =1
else:
d[a] +=1
if M in d:
print(d[M])
else:
print(0)
두 번째 방식이 시간복잡도 측면에서 더욱 효과적일 거라고 기대했습니다.


하지만 테스트 데이터의 개수 차이가 크지 않기 때문에 차이가 없다고 생각합니다.
다른 사람의 공개된 해답 코드를 확인해보겠습니다.

방식적인 면에서 차이가 있어보이지만 단순하게 브루트포스 방식으로 찾으려고 했던 모든 값을 비교했습니다.
하지만 이러한 방식이 더욱 시간복잡도 측면에서 메리트가 있다고 생각합니다.
'BaekJoon Reivew' 카테고리의 다른 글
단계별로 풀어보기 백준_10818번 (0) | 2025.03.18 |
---|---|
단계별로 풀어보기 백준_10871번 (0) | 2025.03.18 |
단계별로 풀어보기 백준_10951번 (0) | 2025.03.17 |
단계별로 풀어보기 백준_10952번 (0) | 2025.03.17 |
단계별로 풀어보기 백준_2439번 (2) | 2025.02.18 |