반응형
문제 URL
https://school.programmers.co.kr/learn/courses/30/lessons/131127
문제 설명
고객이 원하는 상품과 수량이 주어질 때, 특정 날짜에 회원가입을 하면 연속된 10일 동안 원하는 상품을 모두 할인받을 수 있는 날짜의 총 일수를 구하는 문제입니다.
나의 풀이
import java.util.*;
class Solution {
public int solution(String[] want, int[] number, String[] discount) {
int answer = 0;
// 1. 원하는 상품과 개수를 HashMap에 저장
HashMap<String, Integer> wantMap = new HashMap<>();
for (int i = 0; i < want.length; i++) {
wantMap.put(want[i], number[i]);
}
// 2. discount 배열에서 연속된 10일 구간 탐색
for (int i = 0; i < discount.length - 9; i++) {
HashMap<String, Integer> discountMap = new HashMap<>();
// 현재 10일간의 상품 정보를 HashMap에 저장
for (int j = 0; j < 10; j++) {
discountMap.put(discount[i + j], discountMap.getOrDefault(discount[i + j], 0) + 1);
}
// 3. 원하는 상품 목록(wantMap)과 현재 10일간의 할인 목록(discountMap)을 비교
if (wantMap.equals(discountMap)) {
answer++;
}
}
return answer;
}}
HashMap.equals()
HashMap.equals(Object o) 메서드는 두 HashMap의 키와 값이 모두 동일할 경우 true를 반환합니다.
사용 예시
import java.util.HashMap;
public class HashMpEqualsExample {
public static void main(String[] args) {
// 1. Case 1: true를 반환하는 경우
HashMap<String, Integer> map1 = new HashMap<>();
map1.put("apple", 3);
map1.put("banana", 2);
map1.put("cherry", 5);
HashMap<String, Integer> map2 = new HashMap<>();
map2.put("apple", 3);
map2.put("banana", 2);
map2.put("cherry", 5);
System.out.println("Case 1 (True): " + map1.equals(map2)); // true
// 2. false를 반환하는 경우
// Case 2-1: 키는 같지만 값이 다를 때
HashMap<String, Integer> map3 = new HashMap<>();
map3.put("apple", 5); // 다른 값
map3.put("banana", 2);
map3.put("cherry", 5);
System.out.println("Case 2-1 (False - Different values): " + map1.equals(map3)); // false
// Case 2-2: 한쪽에만 키가 존재할 때
HashMap<String, Integer> map4 = new HashMap<>();
map4.put("apple", 3);
map4.put("banana", 2);
System.out.println("Case 2-2 (False - Missing key): " + map1.equals(map4)); // false
// Case 2-3: 키의 타입이 다를 때
HashMap<Integer, Integer> map5 = new HashMap<>();
map5.put(1, 3); // Integer 타입 키
System.out.println("Case 2-3 (False - Different key types): " + map1.equals(map5)); // false
// Case 2-4: 맵의 크기가 다를 때
HashMap<String, Integer> map6 = new HashMap<>();
map6.put("apple", 3);
map6.put("banana", 2);
map6.put("cherry", 5);
map6.put("date", 7); // 추가된 키
System.out.println("Case 2-4 (False - Different size): " + map1.equals(map6)); // false
}
}
실행 결과
Case 1 (True): true
Case 2-1 (False - Different values): false
Case 2-2 (False - Missing key): false
Case 2-3 (False - Different key types): false
Case 2-4 (False - Different size): false
반응형
'알고리즘 > Java' 카테고리의 다른 글
[프로그래머스] 베스트앨범 - 42579 (Java) (0) | 2025.01.20 |
---|---|
[프로그래머스] 오픈채팅방 - 42888(Java) (0) | 2025.01.16 |
[프로그래머스] 완주하지 못한 선수 - 42576(Java) (0) | 2025.01.07 |
[프로그래머스] 다리를 지나는 트럭 - 42583(Java) (0) | 2025.01.02 |
[프로그래머스] 카드 뭉치 - 159994 (Java) (0) | 2024.12.27 |