프로그래머스 해시 문제 위장 (java, javascript)

프로그래머스 해시 문제 위장 (java, javascript)

3. 위장

이문제는 수학적 공식만 알면 쉽게 풀수 있는 문제입니다.

종류 : 얼굴, 상의, 하의. 겉옷

* 배열에 옷의 종류가 얼굴,상의,하의,겉옷 다 있다고 가정하면

공식 : (얼굴 의 옷 갯수 + 1 ) * (상의 의 옷 갯수 + 1 ) * (하의 의 옷 갯수 + 1 ) * (겉옷 의 옷 갯수 + 1 )

-1 (안입었을 경우 뺌)

* 만약 배열에 옷의 종류가 얼굴, 상의 만 있다면

공식 : (얼굴 의 옷 갯수 + 1 ) * (상의 의 옷 갯수 + 1 ) -1 (안입었을 경우 뺌)

-- 문제에서 최소 한 개의 의상은 입는다는 조건이 있기 때문에 -1을 해줌

-- java --

import java.util.HashMap; class Solution { public int solution(String[][] clothes) { int answer = 1; HashMap hash = new HashMap<>(); for(int i = 0; i

-- clothes의 각 행은 [의상의 이름, 의상의 종류]로 이루어져 있습니다.

핵심 메소드 getOrDefault(key, defualt value);

처음 for문을 돌때 default 값을 주지 않고, hash.get(key) +1 을 하였으면 Null값으로 오류가 뜹니다.

그것을 방지하기 위해 getOrDefault 메소드를 사용하여 값이 존재하지 않으면 Default 값으로 0을 던져줍니다.

-- javascript --

function solution(clothes) { var answer = 0; const map = new Map(); for(const [name,kinds] of clothes){ map.set(kinds,(map.get(kinds)||0) +1); } answer = [...map].reduce((acc,cur) => { return acc*=(cur[1]+1); },1); return answer-1; }

-- java와 풀이는 똑같습니다. 같은 공식에 도구만 다르게 했기 때문입니다.

from http://healthyhabit.tistory.com/22 by ccl(A) rewrite - 2021-09-25 15:01:25