on
[프로그래머스] 위장 - JAVA
[프로그래머스] 위장 - JAVA
[프로그래머스] 위장 - JAVA
해시를 이용하여 푸는 문제입니다.
key value 의 형태가 나오면 우선 해시를 생각해보는 것이 좋다고 생각합니다.
{이름, 전화번호} 같은 형태는 거의 대부분이 key value 쌍입니다.
하지만 코드를 작성하기 전에 공식을 오랫동안 고민했습니다.
만약에 입지 않는 조건이 없다면 같은 종류라면 더하고 다른 종류라면 곱해서 나온 숫자가 결과입니다.
하지만 이 문제에선 입지 않는 조건이 껴있습니다.
그래서 종류 갯수에 각각 1씩 더해서 다 곱해주고 마지막으로 1을 빼줘야합니다. 아예 아무것도 안입는 경우입니다.
public int solution(String[][] clothes) { int answer = 1; HashMap hashMap = new HashMap<>(); for (int i = 0;i< clothes.length;i++){ String key = clothes[i][1]; if (!hashMap.containsKey(key)){ hashMap.put(key, 1); }else{ hashMap.put(key, hashMap.get(key)+1); } } for(String keys : hashMap.keySet()){ answer *= (hashMap.get(keys)+1); } return answer-1; }
우선 저의 코드입니다.
HashMap을 사용하였습니다.
그리고 key는 종류를 선택하여 아직 그 해시맵에 없다면 값을 1을 넣어주고 이미 존재한다면 거기에 1씩 더해주는 형식입니다.
그리고 그 모든 숫자들을 더해줍니다.
hashMap.get(key)하면 해당 key의 value값을 가져옵니다.
hashMap.put(key, 11)을 하면 해당 key에 value로 11을 넣어주는 것입니다.
비밀번호 치면 현관문이 열리 듯, key를 치면 그 값이 나오게 되는 형태입니다.
화이팅...!
from http://soobinhand.tistory.com/39 by ccl(A) rewrite - 2021-10-29 01:27:50