BOJ 9375 패션왕 신해빈
-
변수
HashMap<String, Integer> hm = new HashMap<String, Integer>(); // HashMap
-
구현로직
-
같은 이름을 가진 의상은 존재하지 않으니까 의상의 종류에 초점을 맞추기!
-
HashMap hm 안에는 <의상의 종류, 의상의 종류에 해당하는 의상의 개수>
ex) headgear가 2종류, eyewear가 1종류
(*) 여기서 중요한 것!! 선택안하는 경우도 안입는 경우도 넣어줘야돼!
그리고 마지막에 경우의 수 구할때 아무것도 안입은 경우의 수 (-1) 처리 해주기!
-
-
코드
package baekjoon.Silver; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.HashMap; import java.util.StringTokenizer; public class BOJ_9375_패션왕신해빈 { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); int T = Integer.parseInt(br.readLine()); for (int tc = 0; tc < T; tc++) { int clothesNum = Integer.parseInt(br.readLine()); HashMap<String, Integer> hm = new HashMap<String, Integer>(); for (int cn = 0; cn < clothesNum; cn++) { StringTokenizer st = new StringTokenizer(br.readLine()); String nodata = st.nextToken(); // 의상 이름은 필요 X String kindCloth = st.nextToken(); if (hm.containsKey(kindCloth)) { hm.replace(kindCloth, hm.get(kindCloth) + 1); } else { hm.put(kindCloth, 1); } } int answer = 1; for (int num : hm.values()) { answer *= (num + 1); } sb.append(answer - 1).append('\n'); } System.out.println(sb); } // end of main }
-
느낀점
-
해쉬맵 사용법을 잘 익혀두자!
-
HashMap<String, Integer> hm = new HashMap<String, Integer>(); // 이런식으로 선언, 데이터타입은 변할 수 있어!
-
hm.put(string값, integer값) // hashmap에 데이터 넣기
-
hm.get(key값) -> 해당 키값의 value값 출력
-
hm.values() // 해쉬맵에 들어있는 모든 value값들
-
hm.replace(key값, new value값) // hashmap에 해당 key값의 value를 new value값으로 바꿔준다
-
hm.containsKey(key값) // true, false값 return
-
-
문제 링크 : 백준 9375 패션왕 신해빈
Leave a comment