오늘은 여기까지
[프로그래머스] 의상 (해시 Lv.2) - 자바 Java 본문
https://school.programmers.co.kr/learn/courses/30/lessons/42578
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
개념: 해시
문제 설명
- 종류별 최대 1가지 의상만 착용 가능하다.
- 하루에 최소 1개의 의상은 입는다.
- 같은 이름을 가진 의상은 존재하지 않는다.
- clothes의 각 행은 [의상 이름, 의상 종류]로 이루어졌다.
- 의상의 개수는 1개 이상, 30개 이하이다.
문제 풀이
입출력 예 1번
종류 | 개수 |
headgear | 2 |
eyewear | 1 |
가능한 옷의 조합 개수는 (2+1) * (1+1) - 1 = 5개이다.
옷의 종류마다 아무것도 입지 않는 경우의 수 1을 더한 후 곱한다. 이때 그 어떠한 옷도 입지 않은 경우 1가지를 총 조합의 수에서 빼주면 된다.
의상의 종류나 개수가 중요한 것이므로 HashMap<String, Integer>을 선언한다. HashMap의 key는 의상 종류, value는 그 개수가 된다.
코드 구현
import java.util.HashMap;
class Solution {
public int solution(String[][] clothes) {
HashMap<String, Integer> map = new HashMap<>();
for (String[] item : clothes) {
String type = item[1];
map.put(type, map.getOrDefault(type, 0) + 1);
}
int answer = 1;
for (String key : map.keySet()) {
answer *= (map.get(key) + 1);
}
return answer - 1;
}
}
- HashMap의 getOrDefault(Object key, Integer defaultValue) 는 key에 매핑된 값이 있으면 해당 값을, 없다면 디폴트로 설정한 값을 리턴해주는 함수이다.
'Problem Solving' 카테고리의 다른 글
[백준] 1253 좋다 - 자바 Java (0) | 2024.07.08 |
---|---|
[프로그래머스] 프렌즈4블록 (Lv.2) - 자바 Java (0) | 2024.07.03 |
[프로그래머스] 귤 고르기 (해시 Lv.2) - 자바 Java (1) | 2024.07.01 |
[프로그래머스] 오픈채팅방 (Lv.2) - 자바 Java (1) | 2024.07.01 |
[프로그래머스] 완주하지 못한 선수 (해시 Lv.1) - 자바 Java (0) | 2024.06.28 |