728x90
고득점 알고리즘 kit에 수록된 의상 문제다.
백준에서 동일한 문제를 풀었던 기억이 있으나 한번에 성공하지 못했다..
새로운 문제와 알고리즘을 푸는 것도 중요하지만 복습의 중요성도 느꼈다..
🤔 문제 접근
주어지는 입출력 예시는 다음과 같다.
의상 이름인 clothes[i][0] 은 중요하지않고 의상 종류인 clothes[i]의 2번째 데이터,
clothes[i][1]을 가지고 풀어야한다.
종류별로 한 벌씩만 입을 수 있기 때문에 의상 이름은 중요하지 않고 의상 종류에 주목해야 하기 때문이다.
✅ 핵심 풀이
내가 풀었었던 문제임에도 한번에 풀지 못했던 이유인 "해당 의상을 안 입었을 경우"를 고려해야한다.
clothes[i][1]을 Map<String, Integer>에 put해주고 Map의 entrySet을 활용해
순회해주며 알아낸 value 값에 +1(안 입은 경우)를 해주고 다음 value와 곱해준다.
최종적으로 answer 값을 도출한 후, 문제 조건에 모든 옷을 안 입었을 경우는 없다고 했으므로
answer - 1 을 return 해준다.
🚨 CODE
import java.util.*;
import java.io.*;
class Solution {
public int solution(String[][] clothes) {
int answer = 1;
Map<String, Integer> map = new HashMap<>();
for(String[] cl : clothes){
map.put(cl[1], map.getOrDefault(cl[1], 0) + 1);
}
for(Map.Entry<String, Integer> entry : map.entrySet()){
answer = answer * (entry.getValue()+1);
}
return answer-1;
}
}
728x90
반응형
'코딩테스트' 카테고리의 다른 글
[JAVA] 프로그래머스 - 베스트 앨범 (0) | 2024.01.10 |
---|---|
[JAVA] 백준 - 14620 꽃길 (feat. JAVA 얕은 복사, 깊은 복사) (0) | 2024.01.10 |
[JAVA] 백준 - 1920 수 찾기 (0) | 2024.01.04 |
[JAVA] 백준 - 9019 DSLR (0) | 2024.01.01 |
[JAVA] 백준 14502 - 연구소 (0) | 2023.12.28 |