링크 : https://school.programmers.co.kr/learn/courses/30/lessons/132265
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 풀이
HashMap, HashSet을 같이 사용하여 시간 복잡도를 줄였다.
import java.util.*;
class Solution {
public int solution(int[] topping) {
int answer = 0;
Map<Integer, Integer> map = new HashMap<>();
HashSet<Integer> set = new HashSet<>();
for(int i=0; i<topping.length; i++) {
int t = topping[i];
if(map.containsKey(t)) {
map.put(t, map.get(t) + 1);
} else {
map.put(t, 1);
}
}
for(int i=0; i<topping.length; i++) {
int t = topping[i];
map.put(t, map.get(t) - 1);
set.add(t);
if(map.get(t) == 0) {
map.remove(t);
}
if(map.size() == set.size()) {
answer += 1;
}
}
return answer;
}
}'알고리즘 > 프로그래머스' 카테고리의 다른 글
| [프로그래머스] 신고 결과 받기(Java), HashSet 사용 (0) | 2024.10.06 |
|---|---|
| [프로그래머스] 택배 상자(Java), 스택 (2) | 2024.05.29 |
| [프로그래머스] 귤 고르기(Java) (0) | 2024.05.14 |
| [프로그래머스] 연속된 부분 수열의 합(Java), 투포인터 (1) | 2024.04.24 |
| [프로그래머스] 마법의 엘리베이터(Java) (0) | 2024.04.03 |