-
[프로그래머스] 의상 - Java알고리즘 문제 풀이 2024. 5. 9. 16:13
문제 - 의상
https://school.programmers.co.kr/learn/courses/30/lessons/42578
문제 설명
제한사항
입출력 예
clothes return [["yellow_hat", "headgear"], ["blue_sunglasses", "eyewear"], ["green_turban", "headgear"]] 5 [["crow_mask", "face"], ["blue_sunglasses", "face"], ["smoky_makeup", "face"]] 3
접근 방법
- 이 문제는 입력에서 보면 의상의 이름과 의상의 종류가 이렇게 주어진다
- 형태를 보면 key value 로 map을 사용하는 것 같다
- 종류를 key, 의상 이름을 value로 해서 저장하면 될 것 같다
- 그리고 value로 의상 이름을 넣는게 아니라 뭐 따로 해줄게 없으니 옷의 종류에 해당하는 것이 몇개 있는지 구하고 각 조합을 구하면 될 것 같다
코드 작성
import java.util.*; class Solution { public int solution(String[][] clothes) { int answer = 1; Map<String, Integer> map = new HashMap<>(); for (String[] a : clothes) { map.put(a[1], map.getOrDefault(a[1], 0) + 1); } for (int value : map.values()) { answer *= (value + 1); } return answer - 1; } }
문제 풀고 느낀점
- 이 문제는 접근 할때 무작정 Stirng, List<String> 이렇게 종류와 이름을 넣고 구현 하면 구현이 조금 복잡해 진다 (작성자는 이걸로 20분 소모했다) 그냥 조합 구하는 문제 이므로 String, Integer로 해서 종류의 갯수를 구해서 조합을 구하면 된다
- 하지만 위 코드에서 반환하는 문에 answer - 1이 있는 이유는 다 안 입는 경우를 뺀것이다 이 부분에서 틀린 사람이 많을 거라고 생각한다
'알고리즘 문제 풀이' 카테고리의 다른 글
[백준] 2178 미로 탐색 - Java (0) 2024.05.14 [백준] 1926 그림 - Java (0) 2024.05.14 [프로그래머스] 기능개발 - Java (0) 2024.05.08 [프로그래머스] 스킬트리 - Java (0) 2024.05.08 [프로그래머스] 같은 숫자는 싫어 - Java (0) 2024.05.06