-
[프로그래머스] 위장 - 해시알고리즘/문제풀기 2019. 4. 17. 23:38
문제를 이해하고 경우의 수를 모두 구해야하는 줄 알고 복잡한 문제라고 생각했다.
그런데 질문하기에서 훨씬 접근하기 쉬운 방법을 찾았고 코드를 짜기 시작했다.
※ 문제를 쉽게 해결 할 수 있었던 꿀팁!!
머리:3, 얼굴:2, 옷:1 이라면 총 가능한 개수는
(3+1) * (2+1) * (1+1) -1 = 23 으로 계산 할 수 있다.
+1씩 더한 이유는 착용하지 않은 경우를 추가한 것이고,
마지막에 -1을 해준 이유는 모든 부위를 입지 않은 경우는 없기 때문이다.
위 공식을 사용해서 아래처럼 코드를 짰다.
class Solution { public int solution(String[][] clothes) { int answer = 0; HashMap<String, Integer> clothesmap = new HashMap<>(); //옷의 종류를 key에, 한 종류의 갯수를 value에 저장하는 hashmap int count = 1; //곱셈을 위한 변수 for(int i=0; i<clothes.length; i++) { String type = clothes[i][1]; //옷의 종류를 type변수에 저장 if(!clothesmap.containsKey(type)) { //key에 같은 종류의 옷이 있지 않다면 clothesmap.put(type, 0); //옷의 종류와 0을 넣어줌 } clothesmap.put(type, clothesmap.get(type)+1); //같은 종류가 있다면 +1한 값을 넣어줌 } for(String str : clothesmap.keySet()) { //종류별로 값을 받아와서 계산을 해준다. count *= clothesmap.get(str) + 1; } answer = count -1; return answer; } }
아~~주 시원한 통과를 볼 수 있었다!!!
'알고리즘 > 문제풀기' 카테고리의 다른 글
[프로그래머스] 타겟넘버 - DFS (0) 2019.05.21 [프로그래머스] 가장 큰 수 - 정렬 (0) 2019.05.01 [프로그래머스] K번째 수 - 정렬 (0) 2019.04.20 [프로그래머스] 전화번호 목록 - 해시 (0) 2019.04.16 [프로그래머스] 완주하지 못한 선수 - 해시 (0) 2019.04.16 댓글