코딩테스트/프로그래머스
[해시] 위장 - JAVA
의정부핵꿀밤
2022. 4. 20. 15:27
728x90
https://programmers.co.kr/learn/courses/30/lessons/42578
코딩테스트 연습 - 위장
programmers.co.kr
이 문제 기억하지?
저번에 파이썬이랑 c++로 풀어본 문제야
근데 자바로는 안했더라고
이건 알고리즘은 기억하고 있어서 그냥 쉽게 풀었는데, 자바에서 해시맵 사용법이 헷갈려서 그것만 간단하게 정리하려고!
우선 코드!
import java.util.HashMap;
public class 위장 {
public static void main(String[] args) {
String[][] clothes = {{"yellowhat", "headgear"}, {"bluesunglasses", "eyewear"},{"green_turban", "headgear"}};
solution(clothes);
}
public static int solution(String[][] clothes) {
int answer = 1;
HashMap<String,Integer> map = new HashMap<>();
for(int i=0;i<clothes.length;i++) {
if(!map.containsKey(clothes[i][1])){
map.put(clothes[i][1], 1);
} else {
map.replace(clothes[i][1], map.get(clothes[i][1])+1);
}
}
for(String key : map.keySet()) {
answer *= (map.get(key)+1);
}
answer--;
return answer;
}
}
우선 HashMap은 저렇게 선언했어
HashMap<String, Integer> map = new HashMap<>();
< >에서 앞에 오는게 key 값이고, 뒤에 오는게 value야
문제에서는 의상 종류가 key 값이 되고, value에는 해당 의상 종류의 개수를 저장할거라서 String, Integer로 선언했어
그리고 HashMap에 값을 넣을 떄는 put을 사용해
map.put(key, 1);
put 하고 앞에 key, 뒤에 value 쓰면 돼
담에 값을 업데이트하려면 replace 사용하면 돼
map.replace(key, updateValue);
뭔지 알지??
해시 값의 value를 얻어오려면 get 사용!
map.get(key);
get 하고 뒤에 key 값 쓰면 value 얻어올 수 있어!
해시맵에 해당 키값이 있는지 확인하려면 containsKey 사용!
map.containsKey(clothes[i][1]);
true/false로 반환한다잉
마지막으로 해시맵 반복문 사용법!
for(String key : map.keySet()) {
answer *= (map.get(key)+1);
}
keySet쓰면 반복문으로 key 값 얻어올 수 있는데, 그 key값을 get에 넣어서 value 가져오면 돼!
끝!
728x90